Iterator パターンを実装しようとしています。基本的に、私が理解していることから、クラスを「foreachble」にし、正確なコレクションタイプをユーザーに公開しないことでコードをより安全にします。
私は少し実験してきましたが、クラスに IEnumerator GetEnumerator() を実装すると、目的の結果が得られることがわかりました...インターフェイスの実現をいじるという頭痛の種がないように見えます。
ここに私が意味することを垣間見ることができます:
public class ListUserLoggedIn
{
/*
stuff
*/
public List<UserLoggedIn> UserList { get; set; }
public IEnumerator<UserLoggedIn> GetEnumerator()
{
foreach (UserLoggedIn user in this.UserList)
{
yield return user;
}
}
public void traverse()
{
foreach (var item in ListUserLoggedIn.Instance)
{
Console.Write(item.Id);
}
}
}
私の質問は、これは Iterator の有効な例ですか? はいの場合、なぜこれが機能するのですか。イテレータが「var」を介して一部または匿名オブジェクトのみを返すようにするにはどうすればよいですか。そうでない場合、正しい方法は何ですか...