【发布时间】:2009-12-18 15:03:51
【问题描述】:
我正在尝试了解如何以编程方式(即不使用 FieldAttribute)为 NHibernate Search (Lucene.net) 添加索引列。
由于FieldAttribute 不是自动继承,我遇到了继承问题。
以下代码说明了我想要做什么。
class A
{
[Field(Index.Tokenized)]
public virtual string P1
{
get
{
return "P1";
}
}
}
class B : A
{
public override string P1
{
get
{
return "P1+";
}
}
}
我希望 P1 的覆盖被索引,但它没有。当我检查FieldAttribute 类时,我发现它没有在AttributeUsage 属性中指定Inherited = true。
然后我将FieldAttribute 添加到被覆盖的属性中,但这导致NHibernate Search 退出,但异常指出具有相同键的项目已添加到字典中。我认为这是因为在类型链中有两个名称相同的属性,它们都带有 FieldAttribute,并且它只接受一个。
那么,我如何通过不使用FieldAttribute 以编程方式解决这个问题?
【问题讨论】:
标签: nhibernate search lucene lucene.net