实例化对象中的所有属性和子属性(C#.net)

时间:2015-02-27 22:26:17

标签: c# .net recursion reflection properties

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

我已经考虑过使用反射和递归,但我仍然对实现如何工作有点困惑。我当前的实现涉及循环PropertyInfo数组,并使用Activator.CreateInstance中的SetValue。当我深入了解x时,我得到了很多例外:

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

我应该只考虑这些情况,还是有更好的方法来做这件事?最终,它还没有为我仍然需要的东西分配价值。谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

可能这有点过头了,但是有一个看起来像是层次结构的大对象(你提到了抽象类),我会使用一个正确配置的DI容器,比如Unity,为我做这项工作。

答案 1 :(得分:1)

您正在寻找依赖注入,.NET包含Managed Extensibility Framework,它支持创建具有属性和适当生命周期控制的对象。

但是,当它无法实例化类型时它仍会提供异常,但MEF不是创建所有类型,而是提供属性和其他方法来控制应该实例化的类型。