OK、List<> には、ReadOnlyCollection を提供する AsReadOnly() が含まれています。必要なのは、IList タイプのフィールドと、このリストの ReadOnlyCollection を返すプロパティを持つことです。
クラスの例:
class Test
{
private IList<Abc> list;
public AddToList(Abc someItem) { /* adds inside the list */... }
public ReadOnlyCollection<Abc> List { get { return ??? } } // <- no "set" here!
}
シナリオは次のとおりです。項目がリストに追加されるときに、クラス内にいくつかのカスタム ロジックが必要であり、list.Add( someItem)。問題は、IList インターフェイスを必要とするNHibernateを使用しているため、IListで AsReadOnly() をキャスト/呼び出しできないことです (このメソッドは含まれていません)。
この状況を解決するには、どのような方法をお勧めしますか? NHibernate が何らかの方法で必要なコレクションを設定する方法が必要なだけですが、ユーザーを制限する必要もあります。