【发布时间】:2011-02-09 22:19:12
【问题描述】:
我有一个动态变量,我根据上下文存储一个可以有多种类型的对象(这里是 Foo 和 Bar)
dynamic myvar;
myvar = new Foo();
//or
myvar = new Bar();
Foo 和 Bar 包含不同的方法。 为了访问 myvar 的方法,我认为可以使用像
这样的强制转换(Foo)myvar.mymethodoffoo();
(Bar)myvar.mymethodofbar();
但它不起作用,我得到(动态表达式)此操作将在运行时解析在代码编辑器中。
那么,如何转换动态对象以从编辑器中获取可用的方法和属性?
提前致谢。
【问题讨论】:
-
我不确定您的方法是否最好,我宁愿使用接口或通用基类强烈键入变量。
-
如果您要以强制转换的形式为编译器提供足够的信息来静态解析调用,那么为什么类型是动态的?这对我来说没有任何意义。动态的要点是当类型在编译时不已知时使用它。