【发布时间】:2012-06-22 23:14:45
【问题描述】:
在我们的应用程序(C# - .NET 4.5)中,我们有一个报告生成工具。此工具必须仅接收 SQL 命令,对其进行验证,然后创建一个全新的报告,其中包含与 SQL 命令指定的名称和相应数据类型相同的可用字段,类似于 ORM 工具所做的事情。
由于这个工具的性质,我们使用反射和发射来创建一个全新的类。从 dataReader (System.Data.SqlClient.SqlDataReader) 提供的字段中,我们可以创建类型并使用相应的数据填充它。
这样做的结果是一个 IQueryable 对象,我可以在我的报告中使用它。
整个过程已经完成并经过测试,但是为了将报告、生成的类和 SQL 命令放在一起,我们需要将这种新类型保存在数据库中,因为或者我们的数据库布局和系统定义,这需要我提供将类似 XML 的文件或字符串转换为将在保存之前压缩并转换为 Base64 字符串的方法。
如果我要将报告保存到 DLL 文件中,这将是一项简单的任务,就像显示的 HERE。
但由于这种新类型必须转换为类似 XML 的格式,所以我有点迷失在这里。
我过去做过相反的事情:手动从纯 XML 文件完全创建类型。我也知道我可以做类似的事情,但它需要我循环到类的每个细节/属性/方法/成员/等来创建 XML 文件。
有什么方法(比如 .NET 框架的助手)可以帮助我吗?
我不想 100% 手动完成,而是想委托 XML生成/解析到可能具有更好性能的工具...
编辑:
各位,发表评论前请阅读标题!我正在尝试为该类型保存一个 XML。 类型。不是对象。类型。
@Mark Gravell 谢谢你的提示。我会检查的。 但是关于架构:有什么方法可以自动保存/加载它?
【问题讨论】:
-
XmlSerializer在这种情况下不起作用是否有原因? -
XmlSerializer不起作用吗?听起来应该…… -
为什么还要保存创建的类型?为什么不能每次都重新创建?
-
@JohnSaunders 你真的不必这么说。我只是忘记了标题上不允许使用标签。有史以来第一次。不要痛苦。
标签: c# xml reflection reflection.emit