svcutil 有时不生成使用 /xmlserializer 包装另一种类型的数组的复杂类型
我在基本类型 XSD 中有一个声明的元素“RecordRefSet”;它是“RecordRef”元素的容器元素。 “RecordRefSet”元素在一组 WSDL 中的不同位置被引用。
当我的第一个项目从这些 WSDL 和 XSD 生成代码时,生成的代码包括一个名为“RecordRefSet”的类,该类在各个地方使用。
但是,当我的第二个项目从这些 WSDL 和 XSD 的子集生成代码时,生成的代码不包含名为“RecordRefSet”的类,而是在第一个项目使用“RecordRefSet”实例的位置直接使用“RecordRef”数组班级。
我想知道是什么决定了 SVCUTIL 何时决定生成“RecordRefSet”类以及何时决定直接使用“RecordRef”数组。
我已经检查过,在这两种情况下,它都运行完全相同版本的 SVCUTIL,具有相同的命令行选项(生成服务合同、XMLSerializer)。唯一的区别是,第一个项目包含我的所有 WSDL 和 XSD 文件,生成的代码总量更大,第二个项目使用 WSDL 和 XSD 文件的子集。
I have a declared element "RecordRefSet" in the basetypes XSD; it is a container element for "RecordRef" elements. The "RecordRefSet" element is referenced in various places in a set of WSDL.
When my first project generates code from those WSDL and XSD, the generated code includes a class called "RecordRefSet", which is used in various places.
But when my second project generates code from a subset of those WSDL and XSD, the generated code does not include a class called "RecordRefSet" and instead directly uses arrays of "RecordRef" in the places where the first project uses instances of "RecordRefSet" class.
I want to know what determines when SVCUTIL decides to generate the "RecordRefSet" class and when it decides to use arrays of "RecordRef" directly.
I have checked that it is running the exact same version of SVCUTIL, with the same command-line options (generate service contracts, XMLSerializer), in both cases. The only difference is that the first project includes all my WSDL and XSD files, generating a larger total amount of code, the second project use a subset of WSDL and XSD files.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不知道 SvcUtil 的确切细节,但如果您将 [KnownType(typeof(YourType)] 属性添加到您的类中,这将告诉代理生成器该服务使用什么类型,并据此生成 RecordRefSet 类你每次
I don't know the exact details of SvcUtil but if you add the [KnownType(typeof(YourType)] attribute to your class this will tell the proxy generator what types is the service using and according to that it should generate the RecordRefSet class for you everytime