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