将动态变量强制转换为给定的Type

eka*_*808 3 c# dynamic c#-4.0

我有一个动态变量,我根据上下文存储一个可以是多种类型的对象(这里是FooBar)

dynamic myvar;
myvar = new Foo();
//or
myvar = new Bar();
Run Code Online (Sandbox Code Playgroud)

Foo和Bar包含不同的方法.为了能够访问myvar的方法,我认为可以使用像

(Foo)myvar.mymethodoffoo();
(Bar)myvar.mymethodofbar();
Run Code Online (Sandbox Code Playgroud)

但它不起作用,我得到(动态表达式)此操作将在运行时在代码编辑器中解决.

那么,我如何构建动态对象以从编辑器中获取可用的方法和属性?

先谢谢了.

SLa*_*aks 10

强制转换操作((SomeType)x)的优先级低于..
因此,您的代码被解析为(Bar)(myvar.mymethodofbar())- 在方法调用之后进行转换.

您需要添加括号:

((Bar)myvar).mymethodofbar();
Run Code Online (Sandbox Code Playgroud)