我有一个动态变量,我根据上下文存储一个可以是多种类型的对象(这里是 Foo 和 Bar )
dynamic myvar;
myvar = new Foo();
//or
myvar = new Bar();
Foo和Bar包含不同的方法。 为了能够访问myvar的方法,我认为可以使用像
这样的强制转换(Foo)myvar.mymethodoffoo();
(Bar)myvar.mymethodofbar();
但它没有用,我在代码编辑器中得到(动态表达式)此操作将在运行时解析。
那么,我如何投射动态对象以从编辑器中获取可用的方法和属性?
提前感谢。
答案 0 :(得分:10)
施法操作((SomeType)x
)的lower precedence比.
因此,您的代码被解析为(Bar)(myvar.mymethodofbar())
- 在方法调用之后进行转换。
您需要添加括号:
((Bar)myvar).mymethodofbar();
答案 1 :(得分:2)
((Foo)myvar).mymethodoffoo();
((Bar)myvar).mymethodofbar();