我有一个具有大约100个属性的对象(x)。这些属性中的大多数都是引用类型,在我可以对x执行任何操作之前需要对其进行实例化。此外,x上的许多属性都将具有需要实例化的属性。
我已经考虑过使用反射和递归,但我仍然对实现如何工作有点困惑。我当前的实现涉及循环PropertyInfo数组,并使用Activator.CreateInstance中的SetValue。当我深入了解x时,我得到了很多例外:
我应该只考虑这些情况,还是有更好的方法来做这件事?最终,它还没有为我仍然需要的东西分配价值。谢谢你的帮助。
答案 0 :(得分:2)
可能这有点过头了,但是有一个看起来像是层次结构的大对象(你提到了抽象类),我会使用一个正确配置的DI容器,比如Unity,为我做这项工作。
答案 1 :(得分:1)
您正在寻找依赖注入,.NET包含Managed Extensibility Framework,它支持创建具有属性和适当生命周期控制的对象。
但是,当它无法实例化类型时它仍会提供异常,但MEF不是创建所有类型,而是提供属性和其他方法来控制应该实例化的类型。