Вызов группы методов - PullRequest
0 голосов
/ 16 марта 2009

У меня есть группа методов, которая содержит такие элементы, как:

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

    }
}

И что я хочу сделать, это

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

где я хочу сделать это действие:

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

Я пробовал разные предметы как ????? безуспешно. Я упускаю некоторые тонкости: - (

1 Ответ

2 голосов
/ 16 марта 2009

Вам необходимо объявить 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 ))
}
...