我的域类具有如下所示的集合:
private List<Foo> _foos = new List<Foo>();
public virtual ReadOnlyCollection<Foo> Foos { get { return _foos.AsReadOnly(); } }
这给了我可以从类中修改的只读集合(即通过使用字段_foos)。
该集合映射如下(Fluent NHibernate):
HasMany(x => x.Foos).KeyColumn("ParentClassId").Cascade.All().Inverse().Access.CamelCaseField(Prefix.Underscore);
现在,当我尝试使用这个集合时,我得到:
无法转换类型为“NHibernate.Collection.Generic.PersistentGenericBag 1[Foo]' to type 'System.Collections.Generic.List
1[Foo]”的对象。
根据Unable to cast object of type NHibernate.Collection.Generic.PersistentGenericBag to List,这是因为集合需要作为接口暴露给 NHibernate,以便 NHibernate 可以注入它自己的集合类之一。
文章建议改用 IList,但遗憾的是,这个接口不包含 AsReadOnly() 方法,打乱了我只向外界公开只读集合的计划。
谁能建议我可以使用什么界面,满足相同要求的不同方法,或者不涉及这么多挫折的替代职业?
谢谢
大卫