【发布时间】:2013-04-09 13:03:50
【问题描述】:
我正在寻找一个可以获取实例的序列化程序,并将其序列化为一个包含 c# 代码的字符串,表示图形的内容。
该类的功能类似于 JSON.NET 中的SerializeObject。
我知道只有非常有限的一组结构会起作用,但我感兴趣的结构非常简单,而且它们会起作用。
如果有人知道具有类似功能的 Visual Studio Visualizer,则可以加分。
编辑: 输出将在编译时用于不同的应用程序。我不需要在运行时反序列化输出(c# 代码),它会保存到文件中进行分析。
var foo = new Foo() { Number = 1, Bar = new Bar() { Str = "Bar"}};
string sourceCode = Magic.SerializeObject(foo);
输出:
Foo obj = new Foo();
obj.Number = 1;
obj.RefType = null; // infer this
obj.Bar = new Bar();
obj.Bar.Str = "Bar";
【问题讨论】:
-
stackoverflow.com/questions/6503762/… 你试过 XmlSerializer 了吗?
-
@Androidy 我经常使用它。它只序列化为 XML,而不是 c#。
-
我不知道一个现成的解决方案,但也许你想看看 Visual Studio 用于代码生成的 T4 文本模板...msdn.microsoft.com/en-us/library/dd820620.aspx...一点有点反思,你很高兴......
-
从技术上讲,这是 C# 代码
Foo obj = JsonConvert.Deserialize<Foo>("[the json]");,但它显然与您的示例输出不匹配。您介意分享一下为什么需要 C# 代码吗? -
等等,伙计们,你们误解了我在寻找什么。我不想在运行时发出代码/创建新类型,或者类似的东西。我想采用一个数据结构,将其序列化为 c# 代码表示。然后我将此输出保存到文件中。我在稍后阶段获取此输出,并将其用于正常编译的不同项目中,以提供“真实”测试数据。我希望它在 c# 中,而不是 JSON/XML/etc 中,因为如果/当我们更改类时,编译器可以确保数据结构匹配。很抱歉有任何混淆。
标签: c# .net serialization