2008-10-21 247 views
0

我正在尋找最乾淨的方式。儘管如此,我很想使用委託人。從非靜態類動態調用非靜態方法的最簡單方法?

+0

我們需要更多關於您正在嘗試執行的操作的信息。請舉個例子。 – 2008-10-21 22:13:52

+0

我不想過於具體,因爲我願意將我的代碼合併到任何干淨的解決方案中。在我開始編寫任何代碼之前我只想要一個乾淨的解決方案 – jdelator 2008-10-21 22:46:49

回答

1

你是否在這樣的事情?

class A 
{ 
    public int Value; 
    public int Add(int a) { return a + Value; } 
    public int Mul(int a) { return a * Value; } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     A a = new A(); 
     a.Value = 10; 
     Func<int, int> f; 
     f = a.Add; 
     Console.WriteLine("Add: {0}", f(5)); 
     f = a.Mul; 
     Console.WriteLine("Mul: {0}", f(5)); 
    } 
} 

如果你需要它的呼籲相綁定,如C++成員函數指針的對象,我不知道,C#語言支持。不過,您可以始終使用拉姆達或代表:

Func<A,int,int> f = delegate(A o, int i) { return o.Add(i); }; 
Console.WriteLine("Add: {0}", f(a, 5)); 
f = (A o, int i) => o.Mul(i); 
Console.WriteLine("Mul: {0}", f(a, 5)); 
0

您可能需要添加更多詳細信息。代表是一個很好的選項選項,如果只有方法名稱,而不是指向它的實際指針,則反映出來。