我想定義非泛型委託延伸的泛型委託來定義泛型委託類型參數的默認,即是這樣的(不是有效的一段C#代碼,但一個明顯易懂的插圖概念我的意思是希望):如何在C#中使用非泛型委託類型擴展泛型委託類型?
public delegate void MyDelegate<T>(T arg);
public delegate void MyDelegate(object arg) : MyDelegate<object>;
什麼是,如果有的話,正確的方式來聲明呢?
不用說,我可以只申報2個獨立的代表達到幾乎同樣的效果這樣的方式:
public delegate void MyDelegate<T>(T arg);
public delegate void MyDelegate(object arg);
,但我想這樣做,使他們之間的實際關係(其實裸MyDelegate
型是指等於MyDelegate<object>
,就像一個類擴展另一個類或直譯)明確的方式,使下面的代碼將成爲可能的話有效:
MyDelegate<object> d1;
MyDelegate d2;
MyDelegate d1 = d2;
委託類型是密封的,你應該清楚地知道。它們不能被繼承。什麼是你[究竟意欲何爲?(https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。通過這種方式表達你的委託聲明,你會獲得什麼?請注意,在某種意義上,代表是單成員接口。因此,如果您真的需要這樣做,那麼很可能將您的關係表達爲「接口」類型,而不是「委託類型」更合適。 –
@PeterDuniho我覺得這樣尷尬,但我不知道他們在密封的想法,以檢查他們是否是還沒有進入我的腦海: - ]謝謝你告訴。您可以將此作爲答案提交,如果可以,我會接受。我用一個我想要實現的例子來擴展這個問題。 – Ivan