【发布时间】:2012-02-29 23:32:57
【问题描述】:
有几次,我发现自己想要获取对象的状态,并将其变为常量。 例如。我正在设计一个 UI,它显示来自数据库调用的信息。 我只是想要一个数据样本来玩弄,所以我可以看到一切会是什么样子。
假设我有:
public interface IPerson
{
string Name{get;}
string Age {get;}
...
}
public class Person
{
string Name{get; set}
string Age {get; set}
...
}
还有一些方法可以说是数据库调用,或者加载它的方法。 对于此示例,为了简单起见,它从 CSV 文件加载它: 对于此示例,该文件包含:“Mrs McKenzy, 56,..”
IPerson Load(string fileName)
{
var text = File.ReadAllText(filename);
var parts = text.Split(",");
return new Person()
{
Name = parts[0],
Age = Int32.Parse(parts[1]),
...
}
}
由此我想生成我的示例类:(作为 .cs 文件)
public class SamplePerson : IPerson
{
string Name{get {return "Mrs McKenzy"}}
string Age {get {return 56}}
...
}
我能看到的唯一方法是将对象序列化(prob to XML,所以我可以看到其中的内容),然后让我的 SamplePerson 在其构造函数中反序列化对象,以初始化自身。 现在这不是一个糟糕的解决方案。 但我认为如果我可以“序列化为 C#”会更好。 似乎可以放在一起而没有太多麻烦的反射, 所以我想知道是否有一些现有的图书馆。 (如果没有,我想如果我有兴趣,这可能是一个有趣的项目)
【问题讨论】:
-
你描述的是代码生成,不是序列化
-
它被标记为代码生成。在这种情况下,它是一种序列化(至少在我看来)我所做的大多数代码生成都涉及以一种语言生成代码并以另一种语言生成代码——例如领域特定语言的东西。这是关于持久化对象状态的地方
标签: c# .net serialization reflection code-generation