Dans l'exemple suivant, je souhaite définir System.Action qui exécute une méthode spécifique que je définis à l'exécution, mais comment puis-je transmettre le nom de la méthode (ou la méthode elle-même) afin que la méthode Action puisse définir déléguer pour désigner cette méthode particulière?Comment passer un nom de méthode afin d'instancier un délégué?
Je reçois actuellement l'erreur suivante:
« methodName » est une « variable » mais est utilisé comme une « méthode »
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);
}
}
}