2011-12-29 18 views
1

Solrnetを使用して文字列表現の代わりに列挙型の値をインデックスすることはできますか?文字列ではなく列挙型の値をインデックス化する

[Serializable] 
[Flags] 
public enum Gender 
{ 
    Male = 0, 
    Female = 1 
} 

UserクラスのGenderプロパティにSolrの属性を追加します:

[SolrField("gender")] 
public virtual Gender Gender { get; set; } 

Iインデックス実体が使用している場合:

solr.Add(user) 

は、私は、次の列挙に持っていると言います

0の代わりに「男性」を性別としてインデックスします代わりにインデックス0を持つことができますか?

編集:Ondrejが提案するように、このために追加のプロパティを追加しないことをお勧めします。

答えて

3

ISolrFieldSerializerを実装すると、これを行うことができます。タイプがIsEnumの場合は、intにキャストしてシリアル化します。それ以外の場合はDefaultFieldSerializerに委任します。参考のために他のfield serializersを使用してください。

フィールドシリアライザの接続は、選択したIoCコンテナによって異なります。コンテナのドキュメントを確認してください。

2

これを試してみてください:

[SolrField("gender")] 
public int GenderAsInt 
{ 
    get { return (int) Gender; } 
    set { Gender = (Gender) value; } 
} 

public virtual Gender Gender { get; set; } 

はまた[Flags]として、あなたの列挙型を宣言することはあまり意味がありませんのでご注意:

  • ほとんど誰MaleFemale
  • 両方
  • Maleがなるございませんenumフィールドの現在の値に関してデフォルトとして解釈されます。
+0

好ましくは、追加のプロパティを追加せずに言及して忘れてしまいました。私はかなりのEnumを持っていて、約10の重複するプロパティを追加しています。 – Razzie

関連する問題