Вы могли бы сделать Dictionary<MyEnum, Object>
;. После извлечения значения приведите его к соответствующему делегату и вызовите его.
С другой стороны, вы можете использовать что-то вроде шаблона команды и передавать команды, а не перечисляемые значения:
interface ICommand
{
void Execute();
}
class SomeCommand : ICommand
{
public SomeCommand(/* instance and parameters go here */) { /* ... */ }
public void Execute() { /* ... */ }
}
class SomeOtherCommand : ICommand { /* ... */ }
Если вы хотите, чтобы они были доступны как enum, вы можете создать фабричный класс со статическими методами для создания ваших конкретных команд:
class RemoteCommand
{
public static SomeCommand SomeCommand
{
get
{
var result = new SomeCommand(/* ... */);
// ...
return result;
}
}
public static SomeOtherCommand SomeOtherCommand { get { /* ... */ } }
}
Edit:
Кроме того, не уверен в своих потребностях, но раскрываю список вызовов методов, которые может захотеть сделать пользователь, но абстрагирование именно того, что вызывается, звучит как интерфейс:
interface IRemoteCommand
{
void RemoteMethod();
void OtherRemoteMethod(/* params */);
void ImplementedAgainstADifferentServerMethod();
}