我有一種使用的ISet作爲一個集合類型,如下一類:NHibernate的:使用的IEnumerable作爲集合類型導致錯誤
public class Client
{
private ISet<Contact> _contacts = new HashedSet<Contact>();
public virtual ISet<Contact> Contacts { get { return _contacts; } }
}
我不想集合本身能夠被修改外部。不過,如果我更改屬性的類型的IEnumerable如下:
public class Client
{
private ISet<Contact> _contacts = new HashedSet<Contact>();
public virtual IEnumerable<Contact> Contacts { get { return _contacts; } }
}
然後每當我嘗試使用這個類,我得到了NHibernate的錯誤:
System.InvalidCastException:無法投類型的對象NHibernate的.Collection.Generic.PersistentGenericBag 1[Kctc.BusinessLayer.ProbateAssist.Entities.Contact]' to type 'Iesi.Collections.Generic.ISet
1 [Kctc.BusinessLayer.ProbateAssist.Entities.Contact]'。
什麼給?我怎樣才能使集合的公開版本只讀?
NB我也試過使用ReadOnlyCollection,並得到相同的錯誤。
你應該顯示你的nhibernate配置文件的樣子(或者如果你使用FluentNhibernate,你的流暢配置是什麼) – samy 2010-10-26 21:22:08