私はIList<T>
を実装する配列ラッパークラスを作成しています。私はIList<T>.IsReadOnly
(ICollection<T>
から継承)の返品について確信が持てません。Contract of ICollection .IsReadOnly
私のクラスでは挿入と削除ができません。 はで、this[int].set
プロパティでアイテムを変更できます。
MSDN状態
読み取り専用で、コレクションが作成された後の要素の追加、削除、または変更を許可しないコレクションという。私のクラスのために
、これは完全に役に立たないビットを私はtrue
を返すために持っていますが、私の目には、このプロパティをレンダリングすることを意味するようだ:次のように私の知る限り、この方法を使用することです:
クライアントは任意のIList
を処理し、要素を挿入する必要があります()。可能であればです。彼らはInsert
と呼んで、結果としてNotSupportedException
をキャッチすることでこれを行うことができます。これはさまざまな理由から望ましいことではありません。したがって、例外を引き起こす代わりに、クライアントはあらかじめIsReadOnly
プロパティをテストすることができます。
しかし、それは、その内容の修正可能で、コレクションの修正可能性をミックスしているため、このプロパティの結果は、間違っになります - 全く関係のない問題である!確かに
は、IList.IsFixedSize
プロパティがありますが、これは別のタイプ(IList<T>
ががIList
を拡張しませんが)です。私は何をすべきか?また、IList
(私は実際にを実装しないでくださいこの代替のような)?他に何かしますか?
ReadOnlyCollectionでコンテンツを変更することはできますが(変更可能な場合)、「IsReadOnly」プロパティはtrueを返します。 –
@bruno - "コンテンツの編集"を意味するかどうかによって異なります** **指定された位置(list [n] = item)のアイテム、**指定された位置(list [n] .SomeProp = value)の**アイテムを変更する**。 –