使“这”隐含动态

时间:2010-11-18 09:03:20

标签: c# dynamic c#-4.0

我有一个继承自 DynamicObject 的类并覆盖它的一些成员。我想知道是否有任何我可以使用的技巧使得'this'隐式动态(或者至少是外观),所以当我想在类中动态添加成员时我不必这样做

((dynamic)this).Whatever = 10;

如果能做的话会好得多

Whatever = 10;

我只是在捣乱一些东西,所以我不能为此添加任何真实的上下文,不,Ruby这次不是解决方案;)

我可以将它包装在一个属性中,但它会添加到功能的API中,因为我必须这样做

Property.Whatever = 10;

3 个答案:

答案 0 :(得分:4)

为什么不扩展基类?

public class DynamicObjectEx : DynamicObject
{
    protected dynamic self
    {
        get
        {
            return this;
        }
    }
}

或者你只需​​切换到VB.NET,选项严格关闭或任何设置; - )

答案 1 :(得分:1)

这是不可能的。您使用Property.Whatever的方法是可行的。

答案 2 :(得分:0)

将它们添加为非动态属性会不会更容易?如果你在课堂上使用“this”,你肯定那些属性已经存在,不是吗?

我对动态课程知之甚少,但如果我错了,请纠正我!