是否可以使用动态类成员? 例如
class blarg
{
public dynamic ctx = new ExpandoObject();
}
而不让 Blarg 继承(和实施)从DynamicObject
是的。 可以在任何类中dynamic
字段或属性。
从DynamicObject
继承只是必需的(技术上,你需要实现IDynamicMetaObjectProvider
,但这通常通过DynamicObject
完成),如果你想让你的类本身是动态的。
没有固定的继承结构; 首先,dynamic
无论如何都可以使用反射/元编程,所以你可以用成员附加一个常规类,它就可以工作 - 但你将无法添加新成员等。 其次,你需要做的"所有"来支持完整的dynamic
是实现IDynamicMetaObjectProvider
- 而不是继承某些东西。"全部"用引号引起来,因为这并非微不足道。 DynamicObject
的存在是为了为您完成一些繁重的工作,就像ExpandoObject
您只想要一个财产袋的情况一样。
但是由于调用者没有绑定到任何特定类型(因为他们使用的是dynamic
),坦率地说,从DynamicObject
继承并不是一个大问题。