¿Cómo obtengo el tipo de entidad en un objeto que puede ser un objeto proxy de NHibernate?
Tengo una clase baseDomainObject
para todos mis objetos comerciales que estoy usando con NHibernate. Contiene elId
propiedad.
public abstract class DomainObject
{
public virtual int Id { get; private set; }
}
Me gustaria escribir unIEqualityComparer
para comparar mis objetos de dominio. Si dos objetos tienen el mismoId
y son el mismo tipo de objeto, deberían ser iguales. Sin embargo cuando usoGetType()
para obtener el tipo de objeto, devolverá el tipo de proxy NHibernate. Entonces este código:
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);
}
No funciona correctamente, porque el tipo dex is Asset
pero el tipo dey is AssetProxy21879bba3e9e47edbbdc2a546445c657
.
Entonces, ¿cómo obtengo el tipo de entidad en un objeto que puede ser un objeto proxy NHibernate? es decir, en el ejemplo anteriorAsset
en lugar deAssetProxy21879bba3e9e47edbbdc2a546445c657
?