この質問が愚かに聞こえる場合は、コレクションを列挙するのが初めてです。InterfaceクラスからIEnumeratorを呼び出す
あなたが見ることができるように私は、私は上記の二つのインタフェースをクラス
public class PersonStuff : IPersonStuff, IEnumerable<User>
{
Person person = new Person();
...
IEnumerator<Person> IEnumerable<Person>.GetEnumerator()
{
return (person as IEnumerable<Person>).GetEnumerator();
}
}
を実装していています:一つはIPersonStuffと他のもののIEnumerableています。
Personクラスは、各タイプがストリングの単純なゲッター/セッターです。氏名、Dateofbirthという住所はDateTimeです。
そして、私のIPersonStuffに、私はこの持っている:
interface IPersonStuff
{
...
IEnumerator<Person> IEnumerable<Person>.GetEnumerator();
}
一度作業を、私は(任意のクラスから)、次のようにそれを呼び出すしたいと思います:
IPersonStuff personStuff = new PersonStuff();
foreach (Person u in personStuff)
{
//this loop should iterate thru the elements.
}
しかし、私が取得次のエラーが発生しました:
- 'GetEnumerator':明示的なインターフェイス宣言のみ宣言できますdをクラスまたは構造体に入れる
基本的に私は、IPonStuffインターフェイスを介してPersonStuffクラスにあるIEnumerator IEnumerable.GetEnumerator()を呼び出すことができます。
PersonクラスはIEnumerableを実装していますか?そうであれば、それは何らかのコレクションでなければなりません。その名前は適切ではありません。 PersonStuffで宣言されたGetEnumerator関数で何を達成しようとしていますか? –
PersonクラスはIEnumerableを実装していませんが、PersonStuffは実装しています。 Personオブジェクトのアイテムを列挙したいと思います。 PersonStuffはPersonオブジェクトを作成し、それを処理します。 – user159603
あなたが記述した実装は、複数の 'Person'オブジェクトに対して反復処理を行い、一人の人の内部の項目は反復処理しません。私が誤解している場合は、IEnumerable実装を使用する方法の例を投稿してもらえますか? – jeremyalan