是否可以使用动态类成员?例如
class blarg
{
public dynamic ctx = new ExpandoObject();
}
还没有从DynamicObject
生成blarg继承(和实现)?
答案 0 :(得分:2)
是。您可以在任何类中创建字段或属性dynamic
。
仅需要继承DynamicObject
(从技术上讲,您需要实施IDynamicMetaObjectProvider
,但这通常是通过DynamicObject
完成的),如果您希望您的类本身是动态的。
答案 1 :(得分:0)
没有固定的继承结构;首先,dynamic
无论如何都可以使用反射/元编程,因此您可以只使用成员附加常规类,它也可以工作 - 但是您将无法添加新成员等。其次,“所有”你需要做的是支持完整dynamic
是实现IDynamicMetaObjectProvider
- 不继承某些东西。 “所有”都在引号中,因为这不是微不足道的。 DynamicObject
存在为您做一些繁重的工作,对于您只想要一个属性包的情况ExpandoObject
也是如此。
但由于调用者没有绑定到任何特定类型(因为他们使用dynamic
),坦白说从DynamicObject
继承并不是一个大问题。