2009-03-16 25 views
0

ich eine Methode Gruppe, die Elemente wie enthält:Aufruf einer Methode Gruppe

class Foobar 
{ 
    public static DataSet C(out string SpName) 
    { 
     SpName = "p_C"; 
     return null; 
    } 

    public static DataSet C() 
    { 
     string SpName; 
     C(out SpName); 
     return DataAccess.CallSp(SpName); 

    } 
} 

Und was ich tun möchte, ist

ButtonC.Text = DataAccess.GetSpName(**?????** Foobar.C) 

, wo ich diese Aktion tun:

public string GetSpName(**(?????)** method) 
{ 
    string spName = string.Empty; 
    method(out spName); 
    return spName; 
} 

Ich habe verschiedene Elemente als ????? ohne Erfolg. Ich vermisse einigen feinen Punkt :-(

Antwort

2

Sie benötigen ein delegate zu erklären:

// A delegate that matches the signature of 
// public static DataSet C  (out string SpName) 
public delegate DataSet GetName(out string name); 

public class DataAccess 
{ 
    // ... 

    static public string GetSpName(GetName nameGetter) 
    { 
     // TODO: Handle case where nameGetter == null 
     string spName; 
     nameGetter(out spName); 
     return spName; 
    } 

    // ... 
} 

// ... 

public void SomeFunction() 
{ 
    // Call our GetSpName function with a new delegate, initialized 
    // with the function "C" 
    ButtonC.Text = DataAccess.GetSpName(new GetName(Foobar.C)) 
}