2013-04-26 103 views
2

我的問題是,我有一個類的構造函數需要一個System.Delegate對象作爲參數,我不知道如何將一個方法分配給System.Delegate對象。 這是代碼我現在所擁有的如何將一個靜態方法分配給System.Delegate對象?

class TestClass 
{ 
    Delegate c = TestMetod; 
    static void TestMetod() 
    { 
     MessageBox.Show("it worked !"); 
    } 
} 

但是那並不是工作,因爲,奇怪的是,System.Delegate是由msdna規定非委託類型。 爲什麼我應該做的事情,我需要,因爲它是不可能的「分配方法組TestMetod非委託類型‘System.Delegate’」

回答

5

static方面是不是這裏的核心問題。您需要一個(任何)委託來捕獲TestMethod,然後您可以將其分配給System.Delegate。您可以使用Action作爲此類中間件。

class TestClass 
{ 
    static Action a = TestMetod; 
    static Delegate c = a; 
    static void TestMetod() 
    { 
     MessageBox.Show("it worked !"); 
    } 
} 
+0

它的工作!但有沒有辦法避免使用Action? – user1909612 2013-04-26 15:39:01

+1

@ user1909612當然,只要使用其他代理即可。沒有什麼特別的「行動」,但你需要*一些*類型的委託使用。 – Servy 2013-04-26 15:44:25

+0

'Action()'是匹配'void TestMethod()'的最簡單方法。 – 2013-04-26 15:46:57

相關問題