1

是否有任何 .Net 库可以获取对象并将其序列化为 Stream,作为创建对象的 C# 代码?

Stream fs = ...;

CSharpFormatter formatter = new CSharpFormatter();

var p = new Person { Name = "Russ", Address = "1024 Oak St" };

formatter.Serialize(fs, p);

在这结束时, fs 会得到一个这样的字符串:

new Person { Name = "Russ", Address = "1024 Oak St" };

我认为这样的事情对于从棘手的运行时案例编写单元测试非常有用。

4

2 回答 2

1

您可能会破解 JSON 序列化程序来执行此操作。给定您的 Person 对象,JSON 序列化器可能会返回如下内容:

{"name":"Russ","Address":"1024 Oak St"}

从那里开始,它的使用Split()Replace()接近你想要的东西相当简单:

{ Name = "Russ", Address = "1024 Oak St" }

其余的只是装点门面。

于 2012-10-02T04:32:49.690 回答
0

只是部分答案,但您可以使用System.CodeDom命名空间中的类来创建代码,例如this example,然后使用CSharpCodeProvider类中的 GenerateCodeFromXXX 方法来发出 C#。

另一种方法是使用T4 文本模板,例如本演练。和反射,但它需要 Visual Studio。

于 2012-10-02T04:35:31.450 回答