动态类成员

本文关键字:成员 动态 | 更新日期: 2023-09-27 17:56:37

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

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

而不让 Blarg 继承(和实施)从DynamicObject

动态类成员

是的。 可以在任何类中dynamic字段或属性。

DynamicObject继承只是必需的(技术上,你需要实现IDynamicMetaObjectProvider,但这通常通过DynamicObject完成),如果你想让你的类本身是动态的。

没有固定的继承结构; 首先,dynamic无论如何都可以使用反射/元编程,所以你可以用成员附加一个常规类,它就可以工作 - 但你将无法添加新成员等。 其次,你需要做的"所有"来支持完整的dynamic是实现IDynamicMetaObjectProvider - 而不是继承某些东西。"全部"用引号引起来,因为这并非微不足道。 DynamicObject的存在是为了为您完成一些繁重的工作,就像ExpandoObject您只想要一个财产袋的情况一样。

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