C#4.0:动态'this'指针

bva*_*een 1 c# dynamic c#-4.0

是否可以允许动态解析'this'指针的方法和属性?

换句话说,一个类可以有一个动态超类吗?

澄清

我希望能够子类化一些类和访问未在编译时定义的属性和方法.

class MyClass : DynamicObject
{
    public void ReceiveValue(object value) {
        MyProperty = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

DynamicObject为我的代码提供了一种set_MyProperty通过上述参数调用通知的方法,对value吗?我知道如果您使用如下语法,这是可能的:

var mc = new MyClass();
...
dynamic dmc = mc;
dmc.MyProperty = value;
Run Code Online (Sandbox Code Playgroud)

但我希望能够从MyClass的方法中做到这一点,就像我做的那样:

dynamic dmc = this;
dmc.MyProperty = value;
Run Code Online (Sandbox Code Playgroud)

DynamicObject有保险吗?

Jon*_*eet 6

不,你不能拥有动态基类.除了其他任何东西,系统仍然需要知道在创建类的新实例时要分配多少空间.

你能解释一下你想要达到的目标吗?可能有一些方法dynamic可以帮助而不需要这种行为.

编辑:好的,看过你的编辑 - 我不认为你可以做你想要的,但如果你只是使用

dynamic dmc = this;
dmc.MyProperty = value;
Run Code Online (Sandbox Code Playgroud)

要么

((dynamic)this).MyProperty = value;
Run Code Online (Sandbox Code Playgroud)

解决方法应该没问题.为了把它的另一种方式:在this给定值始终静态类型的,但你可以用一个表达式this,但有一个动态类型.

除非你做了很多动态的工作,否则这不应该太繁重- 在这种情况下,我建议你使用完全动态的语言.如果您在IronPython/IronRuby中实现大量动态代码,则无论如何都可以轻松地将其与C#代码集成.