假设我有以下课程。
public class MyClass {
public string Data1 { get; set; }
public MyOtherClass Data2 { get; set; }
// 50+ other properties...
}
public class MyOtherClass {
public string OtherData1 { get; set; }
// More properties
}
有一些代码可以实现该类,并使用所有数据填充它。我想用这个对象进行测试。我可以简单地将结构序列化为XML并稍后重新加载。但是,我真正想要的是在代码中构建整个对象树。换句话说:
MyClass myClass = new MyClass {
Data1 = "Hello",
Data2 = new MyOtherClass {
OtherData1 = "World",
// More...
},
// More...
}
我可以自己编写所有内容,但由于存在大量属性和子类,因此需要数小时且容易出错。这是我的问题:给定一个对象如何生成填充该对象的代码?
答案 0 :(得分:1)
我会写一个T4 template。查看正在做某事的an example,虽然非常远,但与您的需求类似。
答案 1 :(得分:0)
我会使用json作为数据格式,并使用http://json2csharp.com之类的东西来生成用于序列化和反序列化json的类。或者给已经存在的类注释它们并将它们序列化。
这将处理任意嵌套并且可维护。甚至可以在没有重新编译的情况下编辑值,这通常是一件好事。该链接还提供了有关如何指定特定类型,处理枚举,对象链接等的示例。
也许如果您指定为什么绝对必须从代码生成,我们可以提供更好的答案。