2009-03-16 11 views
0

J'ai un groupe de méthode qui contient des éléments tels que:Appeler un groupe de méthode

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); 

    } 
} 

Et ce que je veux faire est

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

où je veux faire cette action:

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

J'ai essayé divers articles comme ????? sans succès. Il me manque un point bien :-(

Répondre

2

Vous devez déclarer delegate:

// 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)) 
}