2016-12-05 3 views
0

特定のクラスだけでiterfaceを実装できるようにすることは可能ですか? ExmapleについてはCでインタフェースの実装を制限する方法

System.Collections.Generic.Dictionaryクラスで

が実装System.Collections.Generic.ICollection<TKey>同様System.Collections.ICollectionKeyCollection密封されたクラスを持っていますが、私は、コードのVisual Studioを見たとき、それはKeyCollectionだけSystem.Collections.ICollectionインターフェイスメソッドを実装していることを示すメタデータから構築します。

同じように制限するにはどうすればよいですか。

enter image description here

簡単な例: 私は、同じインタフェースを使用しているが、私はコンパイルの問題に直面しています。真であるが、いかなる制限もKeyCollectionていない

enter image description here

+1

方法であること、誰もが '' ICollectionを 'を実装ICollection'たりすることができます場合は、のために求めているものの例? – hvd

+0

あなた自身のアセンブリ(プロジェクト)内のインタフェース移動インタフェースの実装を制限したい場合は、他のプロジェクトで使用するpublicクラスのインタフェースを実装する同じアセンブリ内のインタフェースinternalを作ります – Fabio

+0

できません。どのようにクラスがそれに実装されたインタフェースを実装しないようにクラスを制限することができるか。 –

答えて

0

KeyCollectionICollectionICollection<TKey>の方法を使用しているようです。実際には、すべてのメソッドを実装しています。 Beacuse ICollection<TKey>およびICollectionは、IEnumerable<T>, IEnumerableインターフェイスを実装しています。

ICollection<T> : IEnumerable<T>, IEnumerable

ICollection : IEnumerable

関連する問題