次の例では、実行時に定義する特定のメソッドを実行するSystem.Actionを定義しますが、メソッド名(またはメソッド自体)を渡すと、Actionメソッドでその特定のメソッドを指すデリゲート?私は現在、次のエラーを取得していますデリゲートをインスタンス化するためにメソッド名を渡すにはどうすればいいですか?
:
「methodNameのは、」「変数」ですが、あなたが好きな方法を渡すことはできません「メソッド」
using System;
using System.Collections.Generic;
namespace TestDelegate
{
class Program
{
private delegate void WriteHandler(string message);
static void Main(string[] args)
{
List<string> words = new List<string>() { "one", "two", "three", "four", "five" };
Action<string> theFunction = WriteMessage("WriteBasic");
foreach (string word in words)
{
theFunction(word);
}
Console.ReadLine();
}
public static void WriteBasic(string message)
{
Console.WriteLine(message);
}
public static void WriteAdvanced(string message)
{
Console.WriteLine("*** {0} ***", message);
}
public static Action<string> WriteMessage(string methodName)
{
//gets error: 'methodName' is a 'variable' but is used like a 'method'
WriteHandler writeIt = new WriteHandler(methodName);
return new Action<string>(writeIt);
}
}
}