J'ai un client de classe comme ça:comparaison 2 problème NHibernate objet chargé
public class Client
{
public Person Pers { get; set; }
}
Et je 2 Person's classe enfant:
public class PersonType1 : Person {...}
public class PersonType2 : Person {...}
Ainsi, mon client pourrait être PersonType1 ou PersonType2
Je charge 2 Client en utilisant NHibernate ... Et après cela, j'essaie de comparer que (la différence est sur les attributs PersonType1 et PersonType2) ...
J'ai essayé:
public class ClientComparer : IComparer<Client>
{
public int Compare(Client __c1, Client __c2)
{
string _name1 = __c1.Person.GetType().Equals(typeof(PersonType2)) ? ((PersonType2)(__c1.Person)).Type2Att : ((PersonType1)(__c1.Person)).Type1Att ;
string _name2 = __c2.Person.GetType().Equals(typeof(PersonType2)) ? ((PersonType2)(__c2.Person)).Type2Att : ((PersonType1)(__c2.Person)).Type1Att;
if (_name1 == null)
{
if (_name2 == null)
{
return 0;
}
return -1;
}
if (_name2 == null)
{
return 1;
}
return _name1.CompareTo(_name2);
}
}
Le problème est que __c1.Person.GetType() returs PersonProxy127b2a2f44f446089b336892a673643b au lieu du type correct ... Il est à cause de NHibernate ...
Comment Je fais ça ? Des idées?
Merci
Il est à cause de NHibernate et Lazy Loading. Malheureusement, je n'ai pas de solution pour votre Comparer à court de comparer les propriétés. – mxmissile