汎用コレクションからの継承の次の使用法に出くわしました。
class Model : Collection<Model>
{
public string Name { get; set; }
public string Password { get; set; }
}
そして、次のようにインスタンス化できます。
var model = new Model {Name = "Name1", Password = "Pass1"};
model.Add(new Model { Name = "Name2", Password = "Pass2" });
model.Add(new Model { Name = "Name3", Password = "Pass3" });
model
また、単一のインスタンスとしてもコレクション オブジェクトとしてもアクセスできます。
Console.Out.WriteLine("Original: " + model.Name + " : " + model.Password + Environment.NewLine);
foreach (var m in model)
{
Console.Out.WriteLine(m.Name + " : " + m.Password + Environment.NewLine);
}
これはどのように可能であり、その裏で実際に何が起こっているのでしょうか?
編集:さらに明確にするために、アクセスできる(Name1)コレクションの一部ではなく、アクセスできる(Name2model
)別の単一のインスタンスがあります。この二面性が私を混乱させています。model.Name
model[0].Name