Как получить тип сущности для объекта, который может быть прокси-объектом 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?