#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>