动态类成员?

时间:2013-01-29 20:00:16

标签: c# dynamic .net-4.5

是否可以使用动态类成员?例如

class blarg
{
public dynamic ctx = new ExpandoObject();
}

还没有从DynamicObject生成blarg继承(和实现)?

2 个答案:

答案 0 :(得分:2)

是。您可以在任何类中创建字段或属性dynamic

仅需要继承DynamicObject(从技术上讲,您需要实施IDynamicMetaObjectProvider,但这通常是通过DynamicObject完成的),如果您希望您的类本身是动态的。

答案 1 :(得分:0)

没有固定的继承结构;首先,dynamic无论如何都可以使用反射/元编程,因此您可以只使用成员附加常规类,它也可以工作 - 但是您将无法添加新成员等。其次,“所有”你需要做的是支持完整dynamic是实现IDynamicMetaObjectProvider - 不继承某些东西。 “所有”都在引号中,因为这不是微不足道的。 DynamicObject存在为您做一些繁重的工作,对于您只想要一个属性包的情况ExpandoObject也是如此。

但由于调用者没有绑定到任何特定类型(因为他们使用dynamic),坦白说从DynamicObject继承并不是一个大问题。