Je travaille sur du code existant. Après quelques heures, j'ai réduit ce problème à une classe de sélection de méthodes. Je trouve cette classe difficile à suivre. Est-il possible de réaliser ce type de méthode en choisissant la fonctionnalité d'une manière simple?Refactorisation d'une classe de sélecteur de méthode
public class MethodPicker
{
private delegate string SomeFunc(MethodPicker item);
static readonly Dictionary<string, SomeFunc> test = new Dictionary<string, SomeFunc>();
static MethodPicker()
{
test.Add("key1", Func1);
test.Add("key2", Func2);
test.Add("key3", Func3);
}
public string RunTest(string Name)
{
string somestring = test[Name].Invoke(this);
return somestring;
}
public static string Func1(MethodPicker entity)
{
return "func1 runs";
}
public static string Func2(MethodPicker entity)
{
return "func2 runs";
}
public static string Func3(MethodPicker entity)
{
return "func3 runs";
}
}
Pouvez-vous expliquer ce que la classe est pour? Est-ce juste, "donné une chaîne, invoquer une méthode correspondante?" Si oui, comment cette logique devrait-elle être expliquée? Une cartographie peut-elle exister en tant qu'attribut sur les méthodes statiques? Sans vous expliquer comment cette classe est destinée à être utilisée, je pense qu'il sera difficile d'offrir une solution utile. –
Exactement ce que dit @KirkWoll. En dehors de ça, qu'est-ce que tu ne comprends pas exactement? Est-ce le «délégué» ou le «Invoke» (parce que c'est fondamentalement tout ce qui est «difficile» à propos de la classe). – Styxxy
Utilise les attributs de la méthode. Pas de manière plus simple mais légèrement évolutive. –