我有一個類:在C#泛型參數調用委託
public class MyClass<T>
{
public string TestProperty { get; set; }
}
,我想創建一個代表就這一類的實例,如運行:
Action<MyClass<object>> myDelegate = myclass => myclass.TestProperty = "hello";
然而,上述代表不能用MyClass<object>
以外的任何其他方式調用,例如MyClass<DateTime>
或MyClass<string>
。
我該如何定義委託或修改委託,以便我可以在MyClass<T>
上執行委託,其中T
是任何擴展了object
的東西?
編輯:這可以等到C#4,當這個成爲可能這就是(如果有的話,請還告訴我如何),但我更喜歡現在用它獲得3.5
編輯:我其實也有二等:
public class MyDerivedClass<T1, T2> : MyClass<T1>
{
public int OtherProp { get; set; }
}
理想ID喜歡用下面的語法來定義一些代表:
CreateDelegate<MyClass<object>>(mc => mc.TestProperty = "hello");
CreateDelegate<MyDerivedClass<object, object>>(mc => mc.OtherProp = 4);
然後給出一個對象,我還想看看哪個委託參數匹配,然後運行它們
這可能嗎?我有什麼替代方案來創建這樣的代表?
感謝
感謝您的幫助,請參閱我的評論@Tony和更新後的問題 – 2009-11-05 23:26:07
接口是答案,只是需要停止愚蠢! – 2009-11-06 11:04:58