6

假设我有以下课程。

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

我可以自己写所有这些,但这需要几个小时并且容易出错,因为有大量的属性和子类。这是我的问题:给定一个对象,您将如何生成填充该对象的代码?

4

2 回答 2

1

我会写一个T4 模板。查看一个正在做某事的示例,虽然非常远程,但与您需要的类似。

于 2012-07-19T17:44:21.153 回答
0

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

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

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

于 2012-07-26T19:52:38.443 回答