【问题标题】:Convert in memory POCO objects to c# code to initialize将内存中的 POCO 对象转换为 c# 代码进行初始化
【发布时间】:2011-02-17 16:20:47
【问题描述】:

是否有用于将内存中的 POCO c# 对象转换为创建该对象的 .cs 代码文件的库或代码示例。一个例子: 内存中汽车类型的对象变为:

Car c = new Car 
{ 
     Name = "mazda", 
     Id = 5,
     Passengers = new List<string> { "Bob", "Sally" }
     // etc... recursing to the bottom
};

我可以假设它只能设置公共属性。

【问题讨论】:

  • 您是否尝试过将 Reflection 与 codedom 类结合使用?您应该能够很容易地生成只有属性的类。
  • 我曾尝试过使用反射,但它在泛型和索引对象周围有点毛茸茸。我想知道是否有人已经看过这个。我从来没有看过codedom,我会看看。谢谢

标签: c# serialization automated-tests poco


【解决方案1】:

有一个 Visual Studio 扩展 (OmarElabd/ObjectExporter) 可在调试时生成 C# 初始化程序代码。我个人需要在运行时从内存中的对象生成 C# 代码。这是从原始问题演变而来的:https://www.nuget.org/packages/ObjectDumper.NET/

ObjectDumper.Dump(obj, DumpStyle.CSharp);从变量返回 C# 初始化程序代码。您可能只想使用 File.WriteAllText 方法写入文件的输出字符串。

【讨论】:

    【解决方案2】:

    您可以使用 Visual Studio T4 代码模板来生成您的 .cs 文件。您可以在this article 中查看有关代码生成工具的信息,看看它是否符合您的要求。

    您需要设置部分代码模板并让您的库函数写出代码模板的其余部分,然后运行模板以生成您的 .cs 类来创建您的 POCO 对象。不确定这是否是唯一的方法,但我可以看到它有效。

    【讨论】:

      【解决方案3】:

      我们使用了binary serialization to serialize objects to file,但没有使用可读的 .CS 文件。

      【讨论】:

        猜你喜欢
        • 2011-12-31
        • 2011-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-27
        • 1970-01-01
        相关资源
        最近更新 更多