是否可以使用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建议的那样。
答案 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]
并没有多大意义:
Male
和Female
Male
将被解释为与枚举字段的当前值相关的默认值