Как получить тип сущности для объекта, который может быть прокси-объектом NHibernate?
У меня есть базовый классDomainObject
для всех моих бизнес-объектов, которые я использую с NHibernate. Он содержитId
имущество.
public abstract class DomainObject
{
public virtual int Id { get; private set; }
}
Я хотел бы написатьIEqualityComparer
сравнить мои доменные объекты. Если два объекта имеют одинаковыеId
и являются одинаковыми объектами, они должны быть равны. Однако, когда я используюGetType()
чтобы получить тип объекта, он вернет тип прокси NHibernate. Итак, этот код:
bool IEqualityComparer.Equals(object x, object y)
{
// null checking code skipped here
if(x is DomainObject && y is DomainObject)
{
return ((DomainObject) x).Id == ((DomainObject) y).Id
&& x.GetType() == y.GetType();
}
return x.Equals(y);
}
Не работает правильно, потому что типx is Asset
но типy is AssetProxy21879bba3e9e47edbbdc2a546445c657
.
Итак, как мне получить тип сущности для объекта, который может быть прокси-объектом NHibernate? то есть в приведенном выше примереAsset
вместоAssetProxy21879bba3e9e47edbbdc2a546445c657
?