实例化对象中的所有属性和子属性(C#.net)
Instantiate all properties and sub properties in an object (C#.net)
我有一个具有大约 100 个属性的对象 (x)。这些属性中的大多数都是引用类型,在我可以对 x 执行任何操作之前需要将其实例化。此外,x 上的许多属性将具有也需要实例化的属性。
我考虑过使用反射和递归,但我对实现的工作方式仍有点困惑。我当前的实现涉及遍历 属性Info 数组,并使用 Activator.CreateInstance 中的 SetValue。当我向下钻取 x 时,我遇到了很多异常:
- 没有为此对象定义无参数构造函数。
- 无法创建摘要class。
- 属性 未找到设置方法。
我应该只考虑这些情况,还是有更好的方法来做到这一点?最终,它并没有为我仍然需要的一切赋值。感谢您的帮助。
可能这有点矫枉过正,但是有这么大的对象似乎引用了 类 的层次结构(您提到了抽象 类),我会使用正确配置的 DI 容器,例如作为 Unity,为我完成工作。
您正在寻找依赖注入,.NET 包含托管扩展框架,它支持创建具有属性和适当生命周期控制的对象。
但是,当它无法实例化类型时,它仍然会给出异常,但 MEF 没有创建所有类型,而是提供了属性和其他方式来控制应该实例化哪些类型。
我有一个具有大约 100 个属性的对象 (x)。这些属性中的大多数都是引用类型,在我可以对 x 执行任何操作之前需要将其实例化。此外,x 上的许多属性将具有也需要实例化的属性。
我考虑过使用反射和递归,但我对实现的工作方式仍有点困惑。我当前的实现涉及遍历 属性Info 数组,并使用 Activator.CreateInstance 中的 SetValue。当我向下钻取 x 时,我遇到了很多异常:
- 没有为此对象定义无参数构造函数。
- 无法创建摘要class。
- 属性 未找到设置方法。
我应该只考虑这些情况,还是有更好的方法来做到这一点?最终,它并没有为我仍然需要的一切赋值。感谢您的帮助。
可能这有点矫枉过正,但是有这么大的对象似乎引用了 类 的层次结构(您提到了抽象 类),我会使用正确配置的 DI 容器,例如作为 Unity,为我完成工作。
您正在寻找依赖注入,.NET 包含托管扩展框架,它支持创建具有属性和适当生命周期控制的对象。
但是,当它无法实例化类型时,它仍然会给出异常,但 MEF 没有创建所有类型,而是提供了属性和其他方式来控制应该实例化哪些类型。