У моих классов доменов есть коллекции, которые выглядят так:
private List<Foo> _foos = new List<Foo>();
public virtual ReadOnlyCollection<Foo> Foos { get { return _foos.AsReadOnly(); } }
Это дает мне коллекции только для чтения, которые можно изменять из класса (т. Е. Используя поле _foos).
Эта коллекция отображается следующим образом (Свободный 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]'.
Согласно Невозможно привести объект типа NHibernate.Collection.Generic.PersistentGenericBag к списку , это потому, что коллекция должна быть представлена NHibernate в качестве интерфейса, чтобы NHibernate мог внедрить один из своих собственных Коллекционные классы.
В статье предлагается использовать вместо этого IList, но, к сожалению, этот интерфейс не включает метод AsReadOnly (), что портит мои планы по представлению только коллекции только для чтения для внешнего мира.
Кто-нибудь может подсказать, какой интерфейс я мог бы использовать вместо этого, другой подход, который соответствует тем же требованиям, или альтернативную карьеру, которая не вызывает такого большого разочарования?
Спасибо
David