C#3.0
もうinterfaceもいらないだろう。
interface IHoge { string Name{ get; } int ID{ get; } } class Class1 { IHoge hoge; public Class1(IHoge hoge) { this.hoge = hoge; } public void Method() { Console.WriteLine("Name = {0}, ID = {1}", hoge.Name, hoge.ID); } } これはC#1.0の考え方だ。C#3.0だと class Class1<T> { Func<T, string> Name{ get; set; } Func<T, int> ID{ get; set; } T Obj{ get; set; } public Class1(T obj, Func<T, string> name, Func<T, int> id) { this.obj = obj; Name = name; ID = id; } public void Method() { Console.WriteLine("Name = {0}, ID = {1}", Name(Obj), ID(Obj)); } }
コッチの方がずいぶん手軽で自由に出来る。