Eh bien, une chose que vous pouvez faire est si vous avez un commutateur:
switch(SomeEnum)
{
case SomeEnum.One:
DoThings(someUser);
break;
case SomeEnum.Two:
DoSomethingElse(someUser);
break;
}
Et avec la puissance des actions, vous pouvez transformer ce commutateur en dictionnaire:
Dictionary<SomeEnum, Action<User>> methodList =
new Dictionary<SomeEnum, Action<User>>()
methodList.Add(SomeEnum.One, DoSomething);
methodList.Add(SomeEnum.Two, DoSomethingElse);
...
methodList[SomeEnum](someUser);
Ou vous pourriez prendre cela plus loin:
SomeOtherMethod(Action<User> someMethodToUse, User someUser)
{
someMethodToUse(someUser);
}
....
var neededMethod = methodList[SomeEnum];
SomeOtherMethod(neededMethod, someUser);
Juste quelques exemples. Bien sûr, l'utilisation la plus évidente serait les méthodes d'extension Linq.