由于使用的框架的限制,有时候传参只能传一个参数, 所以需要把业务参数放到一个 object[] 里, 现在问题是, 如何能够动态cast地这些参数呢?下面是 伪代码
objects[] args = new object[3];// 这几类是不确定的,下一次有可能是 Class4,Class5,Class6
args[0] = new Class1();
args[1] = new Class2();
args[2] = new Class3();logic.RPC("SomeMthod",args);
在 logic,RPC 里, 如何把这些类相应地cast回去呢?
最直观的就是 一堆 if else, 但是以后在更新版本时,每次都要改动这里, 请问有什么办法动态cast 么?if(args[x0] == classy0 )
DoSomething();
else if(args[x1] == classy1 )...
objects[] args = new object[3];// 这几类是不确定的,下一次有可能是 Class4,Class5,Class6
args[0] = new Class1();
args[1] = new Class2();
args[2] = new Class3();logic.RPC("SomeMthod",args);
在 logic,RPC 里, 如何把这些类相应地cast回去呢?
最直观的就是 一堆 if else, 但是以后在更新版本时,每次都要改动这里, 请问有什么办法动态cast 么?if(args[x0] == classy0 )
DoSomething();
else if(args[x1] == classy1 )...
args[0].GetType().Assembly.CreateInstance
不好意思,我没看明白。 我想达到的效果是这样:
if(args[0].GetType() == class1 )
Class1 c1 = (Class1)args[0]
DoSomethingForClass1();
else if(args[1].GetType() == class2 )
Class2 c2 = (Class2)args[1]
DoSomethingForClass2();....