索引Enum的值,而不是字符串

时间:2011-12-29 13:07:44

标签: solr solrnet

是否可以使用Solrnet索引Enum的值而不是其字符串表示?

说我必须遵循枚举:

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

并将solr属性添加到Gender类的User属性中:

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

如果我使用:

索引实体
solr.Add(user)

然后它会将“男性”指定为性别而不是0.是否可以将其指数为0?

编辑:我不想为此添加额外的属性,就像Ondrej建议的那样。

2 个答案:

答案 0 :(得分:4)

您可以通过实施ISolrFieldSerializer来实现此目的。如果类型为IsEnum,则通过强制转换为int进行序列化。否则委托给DefaultFieldSerializer。使用其他field serializers作为参考。

连接您的字段序列化程序取决于所选的IoC容器,请检查容器的文档。

答案 1 :(得分:2)

试试这个:

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

public virtual Gender Gender { get; set; }

另请注意,将枚举声明为[Flags]并没有多大意义:

  • MaleFemale
  • 几乎没有人
  • Male将被解释为与枚举字段的当前值相关的默认值
相关问题