生成基于填充对象的代码

时间:2012-07-19 16:24:31

标签: c# .net reflection

假设我有以下课程。

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...
}

我可以自己编写所有内容,但由于存在大量属性和子类,因此需要数小时且容易出错。这是我的问题:给定一个对象如何生成填充该对象的代码?

2 个答案:

答案 0 :(得分:1)

我会写一个T4 template。查看正在做某事的an example,虽然非常远,但与您的需求类似。

答案 1 :(得分:0)

我会使用json作为数据格式,并使用http://json2csharp.com之类的东西来生成用于序列化和反序列化json的类。或者给已经存在的类注释它们并将它们序列化。

这将处理任意嵌套并且可维护。甚至可以在没有重新编译的情况下编辑值,这通常是一件好事。该链接还提供了有关如何指定特定类型,处理枚举,对象链接等的示例。

也许如果您指定为什么绝对必须从代码生成,我们可以提供更好的答案。