Tengo una clase base DomainObject
para todos mis objetos comerciales que estoy usando con NHibernate. Contiene la propiedad Id
.¿Cómo obtengo el tipo de entidad en un objeto que puede ser un objeto proxy de NHibernate?
public abstract class DomainObject
{
public virtual int Id { get; private set; }
}
me gustaría escribir un IEqualityComparer
a comparar mis objetos de dominio. Si dos objetos tienen el mismo Id
y son del mismo tipo de objeto, deberían ser iguales. Sin embargo, cuando uso GetType()
para obtener el tipo de objeto, devolverá el tipo de proxy NHibernate. Por lo que 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, ya que el tipo de x is Asset
pero el tipo de y is AssetProxy21879bba3e9e47edbbdc2a546445c657
.
Entonces, ¿cómo obtengo el tipo de entidad en un objeto que puede ser un objeto proxy de NHibernate? es decir, en el ejemplo anterior Asset
en lugar de AssetProxy21879bba3e9e47edbbdc2a546445c657
?
Estoy 99% seguro de que esto es un duplicado, pero yo soy demasiado perezoso ahora a buscarla: -) –
Por favor muéstrame el que se duplica, busqué en stackoverflow. –