我正在创建一个程序,用户可以在其中创建自定义命令并在需要时执行它们。结果,我有一个类似于:
public class Command
{
Action c { get; set; }
// Overloaded Constructors------------------------------------
// changes the volume
public Command(int volumeChange)
{
c = ()=>
SomeClass.ChangeMasterVolume(volumeChange);
}
// Animate something
public Command(int x, int y)
{
c = ()=>
SomeClass.MoveMouse(x,y);
}
// etc.. there are more contructors....
//---------------------------------------------------------
public void ExecuteCommand()
{
c();
}
}
当用户关闭应用程序时,我希望将这些命令保存在磁盘的某个位置。大约有 200 个不同的命令,如果我可以从该类中序列化一个实例,那就太好了。由于它包含一个 Action,因此无法对其进行序列化。
如果我不必创建巨大的 switch 语句来确定要执行的命令,那就太好了。处理这个问题的最佳方法是什么?