【问题标题】:Dynamic class member?动态类成员?
【发布时间】:2013-01-30 04:05:00
【问题描述】:

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

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

同时不让 blarg 从 DynamicObject 继承(和实现)?

【问题讨论】:

  • 目前还不清楚您要做什么。请澄清问题。您可以在任何类中拥有dynamic 类型的字段...您尝试了什么,遇到了什么问题?
  • 有了这样的东西,通常更容易启动 LINQPad 或 Visual Studio 并尝试一下......
  • 我确实遇到了编译错误,因此出现了问题,但我发现了问题,我将类型添加到动态声明中,如下所示:public dynamic ExpandoObject ctx = new ExpandoObject();跨度>

标签: c# dynamic .net-4.5


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-03-21
      • 2022-11-29
      • 2018-11-30
      • 2018-12-18
      • 1970-01-01
      • 1970-01-01
      • 2014-06-09
      • 2018-10-05
      • 2012-05-16
      相关资源
      最近更新 更多