Wpis z mikrobloga

@be_on_the_run napisz sobie klasę, która będzie miała metodę CanExecute (w środku zwracasz czy jesteś zainteresowany obsługą danego przypadku) i Execute (obsługuje przypadek). I wtedy masz gdzieś listę tej klasy (z różnymi implementacjami oczywiście) i robisz coś w stylu:
Var command = commands.FirstOrDefault(x=>x.CanExecute(arg));
If(command!=null) command.Execute(arg);