是否可以允许动态解析'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有保险吗?
不,你不能拥有动态基类.除了其他任何东西,系统仍然需要知道在创建类的新实例时要分配多少空间.
你能解释一下你想要达到的目标吗?可能有一些方法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#代码集成.
| 归档时间: |
|
| 查看次数: |
1249 次 |
| 最近记录: |