以下のように、コレクションタイプとしてISetを使用するクラスがあります。
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.PersistentGenericBag1 1[Kctc.BusinessLayer.ProbateAssist.Entities.Contact]' to type 'Iesi.Collections.Generic.ISet
[Kctc.BusinessLayer.ProbateAssist.Entities.Contact]'のオブジェクトをキャストできません。
何が得られますか?コレクションの公開バージョンを読み取り専用にするにはどうすればよいですか?
注意:ReadOnlyCollectionも使用しようとしましたが、同じエラーが発生します。