【问题标题】:Instantiate all properties and sub properties in an object (C#.net)实例化对象中的所有属性和子属性(C#.net)
【发布时间】:2015-04-30 18:36:08
【问题描述】:

我有一个包含大约 100 个属性的对象 (x)。这些属性中的大多数都是引用类型,在我可以对 x 做任何事情之前需要对其进行实例化。此外,x 上的许多属性都将具有也需要实例化的属性。

我曾想过使用反射和递归,但我仍然对实现的工作方式有些困惑。我当前的实现涉及循环通过 PropertyInfo 数组,并使用来自 Activator.CreateInstance 的 SetValue。当我深入研究 x 时,我遇到了很多异常:

  • 没有为此对象定义无参数构造函数。
  • 无法创建抽象类。
  • 找不到属性集方法。

我应该只考虑这些情况,还是有更好的方法来做到这一点?最终,它并没有为我仍然需要的一切分配价值。感谢您的帮助。

【问题讨论】:

  • 可以修改object(x)的代码吗?
  • 所有这些问题在普通的硬编码方法中都是问题。我建议您首先编写(并开始工作)简单但冗长的代码,这样您就可以然后将其转换为使用反射。

标签: c# .net recursion reflection properties


【解决方案1】:

您正在寻找依赖注入,.NET 包含托管可扩展性框架,它支持创建具有属性和适当生命周期控制的对象。

但是,它在不能实例化类型时仍然会给出异常,但是MEF不是创建所有类型,而是提供属性和其他方式来控制应该实例化哪些类型。

【讨论】:

    【解决方案2】:

    这可能是矫枉过正,但有这么大的对象似乎是指类的层次结构(你提到抽象类),我会使用正确配置的 DI 容器,如 Unity,为我完成工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-04
      • 1970-01-01
      • 2021-08-18
      • 2020-12-27
      • 2021-09-24
      • 2014-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多