我们可以使用模式,Xml结构,架构技术来创建简单的数据持有者类代码,我们可以在运行时反序列化并在运行时执行此操作吗?
我们处于.Net项目的早期设计阶段,我们的目标之一是通过配置使得到的系统可扩展,而无需开发人员。我们需要支持新的数据源,通常作为Xml消息提供。目前,我们将消息转换/反序列化为简单类,然后使用已经存在的语言,可以根据需要操作这些类。
当你有一个开发人员将Xml映射到简单类,创建类然后编写反序列化时,这很有效,但对于管理员来说它是不可扩展的。我们的目标用户是高端DBA和/或网络管理员 - 可以处理Xml但可能不知道C#的人。
答案 0 :(得分:3)
您不必编写任何类或反序列化例程。如果您有架构,则可以使用Visual Studio中的XSD.exe工具自动生成类,并使用内置的.NET XML序列化/反序列化。
现在如何在没有重新编译的情况下实现这一点......
这不理想,但这应该有效:
假设您的DBA可以为XML编写架构。 你可以编写一个工具来获取模式,通过XSD运行它,在它上面添加一些包装代码,并创建一个可以在你的应用程序中使用的dll。
这可能是一个手动过程(即管理员通过电子邮件向您发送模式),或者您可以将该工具作为应用程序的一部分进行分发。
此外,您可以从现有XML文档推断出架构。
答案 1 :(得分:1)
也许DataTable
?或者只使用xml DOM(XmlDocument
或XDocument
)作为数据存储?当然,这两者都不是理想的 - 但是如果您的真正的代码能够看到它,那么在运行时只为创建一个类型是没有意义的。额外班级类型的目的是什么?在其他问题中,您必须使用大量反思才能与之交谈。
另一个选项是自定义属性包和IXmlSerializable
,但这是努力。