Wie erhalte ich den Entitätstyp für ein Objekt, bei dem es sich möglicherweise um ein NHibernate-Proxy-Objekt handelt?
Ich habe eine BasisklasseDomainObject
für alle meine Geschäftsobjekte, die ich mit NHibernate verwende. Es enthält dasId
Eigentum
public abstract class DomainObject
{
public virtual int Id { get; private set; }
}
Ich möchte ein @ schreibIEqualityComparer
, um meine Domain-Objekte zu vergleichen. Wenn zwei Objekte dasselbe @ habId
und sind die gleiche Art von Objekt, die sie gleich sein sollten. Wenn ich jedoch @ benutGetType()
Um den Typ des Objekts abzurufen, wird der Proxy-Typ NHibernate zurückgegeben. Also dieser Code:
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);
}
Funktioniert nicht richtig, da der Typ vonx is Asset
aber die Art vony is AssetProxy21879bba3e9e47edbbdc2a546445c657
.
Also, wie bekomme ich den Entitätstyp für ein Objekt, bei dem es sich möglicherweise um ein NHibernate-Proxy-Objekt handelt? im obigen BeispielAsset
Anstatt vonAssetProxy21879bba3e9e47edbbdc2a546445c657
?