在应用程序中创建/编译.net数据类

时间:2010-03-19 00:16:05

标签: c# architecture xml-serialization runtime

我们可以使用模式,Xml结构,架构技术来创建简单的数据持有者类代码,我们可以在运行时反序列化并在运行时执行此操作吗?

我们处于.Net项目的早期设计阶段,我们的目标之一是通过配置使得到的系统可扩展,而无需开发人员。我们需要支持新的数据源,通常作为Xml消息提供。目前,我们将消息转换/反序列化为简单类,然后使用已经存在的语言,可以根据需要操作这些类。

当你有一个开发人员将Xml映射到简单类,创建类然后编写反序列化时,这很有效,但对于管理员来说它是不可扩展的。我们的目标用户是高端DBA和/或网络管理员 - 可以处理Xml但可能不知道C#的人。

2 个答案:

答案 0 :(得分:3)

您不必编写任何类或反序列化例程。如果您有架构,则可以使用Visual Studio中的XSD.exe工具自动生成类,并使用内置的.NET XML序列化/反序列化。

现在如何在没有重新编译的情况下实现这一点......

这不理想,但这应该有效:

假设您的DBA可以为XML编写架构。 你可以编写一个工具来获取模式,通过XSD运行它,在它上面添加一些包装代码,并创建一个可以在你的应用程序中使用的dll。

这可能是一个手动过程(即管理员通过电子邮件向您发送模式),或者您可以将该工具作为应用程序的一部分进行分发。

此外,您可以从现有XML文档推断出架构。

答案 1 :(得分:1)

也许DataTable?或者只使用xml DOM(XmlDocumentXDocument)作为数据存储?当然,这两者都不是理想的 - 但是如果您的真正的代码能够看到它,那么在运行时只为创建一个类型是没有意义的。额外班级类型的目的是什么?在其他问题中,您必须使用大量反思才能与之交谈。

另一个选项是自定义属性包和IXmlSerializable,但这是努力。