我有一類客戶端這樣的:比較2的NHibernate加載的對象問題
public class Client
{
public Person Pers { get; set; }
}
而且我有2個聯絡人的子類:
public class PersonType1 : Person {...}
public class PersonType2 : Person {...}
所以,我的客戶可以PersonType1或PersonType2 ...
我加載2客戶端使用NHibernate ...然後,我試圖比較(差異在PersonType1和PersonType2屬性)...
我試過:
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);
}
}
的問題是,__c1.Person.GetType()returs而不是正確的類型......因爲NHibernate的的It's PersonProxy127b2a2f44f446089b336892a673643b ...
哪有我這樣做?想法?
由於
這是因爲NHibernate和延遲加載。可悲的是,我沒有比較屬性的比較器解決方案。 – mxmissile 2009-11-05 18:24:50