Im folgenden Beispiel möchte ich eine System.Action definieren, die eine bestimmte Methode ausführt, die ich zur Laufzeit definiere, aber wie übermittele ich den Methodennamen (oder die Methode selbst), so dass die Action-Methode die definieren kann delegieren, um auf diese bestimmte Methode zu verweisen?Wie Übergeben eines Methodennamens, um einen Delegaten zu instanziieren?
Ich bin derzeit die folgende Fehlermeldung erhalten:
‚Methodenname‘ ist ein ‚Variable‘, sondern ist wie eine ‚Methode‘ verwendet
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);
}
}
}