Общий фильтр абстрактных классов в NHibernate AutoMap для компонента

#c# #generics #nhibernate

#c# #общие #nhibernate

Вопрос:

Я переопределяю IsComponent метод NHibernate DefaultAutomappingConfiguration , чтобы указать, что мой компонент — это каждый класс, который реализует общий абстрактный класс, но не нахожу, как это сделать.

это базовый класс моего ValueObject :

 public abstract class ValueObject<T> : IEquatable<T> where T : class
 

Я хочу написать что-то похожее на:

 public override bool IsComponent(Type type)
    {
        return type.BaseType == ValueObject<T> where T : class;
    }
 

Ответ №1:

Вы можете использовать это условие:

 type.BaseType.IsGenericType amp;amp; type.BaseType.GetGenericTypeDefinition() == typeof(ValueObject<>)
 

Это условие будет соответствовать каждому типу, где базовый тип является универсальным, а его версия с открытым исходным кодом ValueObject<T>