我使用的是使用xsd.exe工具从XML schema生成的类。它目前生成一个巨大的(32k行) .cs文件。然后,我使用XMLSerializer序列化和反序列化of模型的各个部分。我需要覆盖这些类中的属性,因此我将分部类放在不同的文件中,这些文件覆盖了其中一些生成的方法。但是,这意味着每次模式发生变化时,都要进入并将数百个方法标记为虚拟方法。有没有办法让xsd.exe工具在方法生成时将它们标记为虚拟的?
发布于 2009-11-25 06:07:08
XSD.exe的输出不是很容易定制。
不久前,我遇到了类似的问题,创建了一个简单的控制台应用程序来修改从XSD.exe生成的输出。
发布于 2009-11-25 06:08:04
您需要修改序列化代码,这对我来说似乎很奇怪。如果你需要覆盖属性,难道你不能简单地创建新的属性来包装现有的属性,然后添加新的行为吗?还是我没抓住重点。
发布于 2009-12-05 09:08:09
如果你必须在持续的基础上做这件事,你应该考虑某种类型的代码生成。构建XSD生成的类型,然后编写一个应用程序来加载这些类型,并使用反射生成除了所有属性都是虚拟的之外完全相同的类型。然后,您将能够从新类型派生并根据需要覆盖属性。
这可以成为构建过程的一部分。
https://stackoverflow.com/questions/1793249
复制相似问题