契約のICollection<T>.IsReadOnly
-
21-08-2019 - |
質問
書い配列をラッパークラスを実装する IList<T>
.私の美しく雄大なぢ大自然に包何の見返り IList<T>.IsReadOnly
から継承された ICollection<T>
)あります。
私のクラスの士の挿入となります。で は を変更項目の this[int].set
物件です。
の MSDN 国
コレクション読み取り専用になれない、除去、変更後の回収が作成されます。
私のクラスは、このようなことをしていま戻り true
私の目にはこの描画し、建物の正面がガラス張りで、 ビットまったく役に立たない:調査を実施しているのは、同じ参照し,この手法は以下のとおりである:
お客様の取扱いに任意の IList
必要な要素の挿入がとても早いことが気に入ってい 可能であれば.できないことにより呼び出すだけで、その Insert
キャッチし、この結果、 NotSupportedException
やさまざまな理由ではないのかもしれませんが望ましい。その代わりに招例外のお客様だけの試験に IsReadOnly
物件。
その結果、このプロパティ 間違った なので混合性のコレクションの更新性のコンテンツである 全く関係のない事項!
ているのが IList.IsFixedSize
このホテルは別タイプ(IList<T>
は ない 延長 IList
).どうしたらよいですか?も実施 IList
(ね な このような代替)?何?
解決
何かを考える...
のコレクション配列であるラッパーで一部の配列のような意味論。ie、できな挿入したり取り外したりすることも可能です。
配列を返し false
のための IsReadOnly
や true
のための IsFixedSize
.
と思うだらだらと実施 IList
のほか、 IList<T>
そして真似配列の行動について IsReadOnly
や IsFixedSize
があります。
キーワードに 備考からMSDN の"または":
コレクション読み取り専用になれない、除去 または 変更後の回収が作成されます。
のコレクション は を変更で返す true
のための IsReadOnly
き破る契約思います。
他のヒント
私は定義されている契約を満たすために、あなたはtrue
を返却しなければならないと思います。
あなたは(さらに)IBindingList
を実装できる - これはAllowNew
、AllowEdit
とAllowRemove
を持っています。あなたは他の二つからtrue
からAllowEdit
、およびfalse
を返します。
このため、あなたの発信者チェックはいえ、呼び出し側の責任であるかどうか。 UIの多くは、しかし、コードの意志を結合ます。
を追加しました:
また、あなたはIList
を実装している場合は、のおそらくIList<T>
を実装する必要があります<全角>。特に、IList
はタイプが前もって知られていない反射及び結合シナリオの数、のために重要である。
ここでは、修正の意味が重要です。コレクションの要素を変更し、コレクションに含まれるオブジェクトの変更の間に差があります。コレクション内の実際の空間の要素を考えます。あなたは、スペースを追加スペースを削除、または特定の空間でオブジェクトを変更することはできません。それはIsReadOnly
が遵守することにより契約です。