Я пытаюсь выяснить, как программным способом (то есть без использования FieldAttribute
) добавить столбец индекса для поиска NHibernate (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, за исключением того, что элемент с таким же ключом уже добавлен в словарь. Я полагаю, это потому, что есть два свойства с одинаковыми именами, оба с FieldAttribute
в цепочке типов, и он принимает только одно.
Итак, как мне программно решить эту проблему, не используя FieldAttribute
?