C# 制造;这";隐动态

C# 制造;这";隐动态,c#,dynamic,c#-4.0,C#,Dynamic,C# 4.0,我有一个从DynamicObject继承并重写其某些成员的类。我想知道是否有什么技巧可以让“this”隐式地动态(或者至少是它的外观),这样当我想在类中动态添加成员时就不必这样做了 ((dynamic)this).Whatever = 10; Property.Whatever = 10; 如果我能做到,那就更好了 Whatever = 10; 我只是添加了一些东西,所以我不能添加任何真实的上下文,不,Ruby不是这次的解决方案;) 我可以将它包装在属性中,但它会添加到功能的API中,因为

我有一个从DynamicObject继承并重写其某些成员的类。我想知道是否有什么技巧可以让“this”隐式地动态(或者至少是它的外观),这样当我想在类中动态添加成员时就不必这样做了

((dynamic)this).Whatever = 10;
Property.Whatever = 10;
如果我能做到,那就更好了

Whatever = 10;
我只是添加了一些东西,所以我不能添加任何真实的上下文,不,Ruby不是这次的解决方案;)

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

((dynamic)this).Whatever = 10;
Property.Whatever = 10;

仅仅将它们添加为非动态属性不是更容易吗?如果你在你的类中使用“this”,你肯定那些属性已经存在了,不是吗


我对动态类知之甚少,如果我错了,请纠正我

将它们作为非动态属性添加不是更容易吗?如果你在你的类中使用“this”,你肯定那些属性已经存在了,不是吗


我对动态类知之甚少,如果我错了,请纠正我

为什么不扩展基类呢

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

或者,您也可以简单地切换到VB.NET,关闭选项strict或其他任何设置;-)

为什么不扩展基类呢

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

或者,您也可以简单地切换到VB.NET,关闭选项strict或其他任何设置;-)

这是不可能的。你使用
属性的方法。无论什么方法都是可行的。

这是不可能的。你使用
属性的方法。无论什么方法都是可行的。

实际上不是。这是一个基类,我想动态地向类的继承者添加成员,然后检查在运行时提供特定方法的实现者。我知道这听起来很疯狂,但有一点+这只是一个概念验证(spike:)实际上不是。这是一个基类,我想动态地向类的继承者添加成员,然后在运行时检查实现者是否提供了特定的方法。我知道这听起来很疯狂,但有一点+这只是一个概念的证明:)没关系。。我将您的代码理解为对DynamicObject上的self属性的重写,但事实并非如此。是的,这和我说的解决财产问题的方法是一样的。。我将您的代码理解为对DynamicObject上的self属性的重写,但事实并非如此。是的,这和我在财产问题上说的是一样的解决方案。你可能想看看这里的问题。你可能想看看这里的问题。