パラメータ タイプと戻り値はすべて同じですが、名前とブロックが異なるメソッドがいくつかあります。実行するメソッドの名前を、渡されたメソッドを呼び出す別のメソッドに渡したいと思います。
public int Method1(string)
{
// Do something
return myInt;
}
public int Method2(string)
{
// Do something different
return myInt;
}
public bool RunTheMethod([Method Name passed in here] myMethodName)
{
// Do stuff
int i = myMethodName("My String");
// Do more stuff
return true;
}
public bool Test()
{
return RunTheMethod(Method1);
}
このコードは機能しませんが、これが私がやろうとしていることです。パラメータを定義する必要があるため、RunTheMethod コードをどのように記述すればよいのかがわかりません。
ベストアンサー1
Func
.NET 3.5 のデリゲートをメソッドのパラメータとして使用できますRunTheMethod
。Func
デリゲートを使用すると、特定の型のパラメータをいくつか受け取り、特定の型の引数を 1 つ返すメソッドを指定できます。次に、機能する例を示します。
public class Class1
{
public int Method1(string input)
{
//... do something
return 0;
}
public int Method2(string input)
{
//... do something different
return 1;
}
public bool RunTheMethod(Func<string, int> myMethodName)
{
//... do stuff
int i = myMethodName("My String");
//... do more stuff
return true;
}
public bool Test()
{
return RunTheMethod(Method1);
}
}