質問

書い配列をラッパークラスを実装する IList<T>.私の美しく雄大なぢ大自然に包何の見返り IList<T>.IsReadOnly から継承された ICollection<T>)あります。

私のクラスの士の挿入となります。で を変更項目の this[int].set 物件です。

MSDN

コレクション読み取り専用になれない、除去、変更後の回収が作成されます。

私のクラスは、このようなことをしていま戻り true 私の目にはこの描画し、建物の正面がガラス張りで、 ビットまったく役に立たない:調査を実施しているのは、同じ参照し,この手法は以下のとおりである:

お客様の取扱いに任意の IList 必要な要素の挿入がとても早いことが気に入ってい 可能であれば.できないことにより呼び出すだけで、その Insert キャッチし、この結果、 NotSupportedException やさまざまな理由ではないのかもしれませんが望ましい。その代わりに招例外のお客様だけの試験に IsReadOnly 物件。

その結果、このプロパティ 間違った なので混合性のコレクションの更新性のコンテンツである 全く関係のない事項!

ているのが IList.IsFixedSize このホテルは別タイプ(IList<T>ない 延長 IList).どうしたらよいですか?も実施 IList (ね このような代替)?何?

役に立ちましたか?

解決

何かを考える...

のコレクション配列であるラッパーで一部の配列のような意味論。ie、できな挿入したり取り外したりすることも可能です。

配列を返し false のための IsReadOnlytrue のための IsFixedSize.

と思うだらだらと実施 IList のほか、 IList<T> そして真似配列の行動について IsReadOnlyIsFixedSize があります。

キーワードに 備考からMSDN の"または":

コレクション読み取り専用になれない、除去 または 変更後の回収が作成されます。

のコレクション を変更で返す true のための IsReadOnly き破る契約思います。

他のヒント

私は定義されている契約を満たすために、あなたはtrueを返却しなければならないと思います。

あなたは(さらに)IBindingListを実装できる - これはAllowNewAllowEditAllowRemoveを持っています。あなたは他の二つからtrueからAllowEdit、およびfalseを返します。

このため、あなたの発信者チェックはいえ、呼び出し側の責任であるかどうか。 UIの多くは、しかし、コードの意志を結合ます。

を追加しました:

また、あなたはIListを実装している場合は、のおそらくIList<T>を実装する必要があります<全角>。特に、IListはタイプが前もって知られていない反射及び結合シナリオの数、のために重要である。

ここでは、修正の意味が重要です。コレクションの要素を変更し、コレクションに含まれるオブジェクトの変更の間に差があります。コレクション内の実際の空間の要素を考えます。あなたは、スペースを追加スペースを削除、または特定の空間でオブジェクトを変更することはできません。それはIsReadOnlyが遵守することにより契約です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top