当前位置:  开发笔记 > 编程语言 > 正文

从XSD架构生成C#代码时,如何让数组的名称不是"Items"?

如何解决《从XSD架构生成C#代码时,如何让数组的名称不是"Items"?》经验,为你挑选了1个好方法。

我正在开发一个项目,该项目必须连接到一些古老的Web服务,这些Web服务将请求和响应的一些分层数据打包成单个分层XML字符串.

我一直在使用xsd.exe从示例请求和响应XML片段生成XSD,在必要时修改它们以获得最佳定义,并再次使用xsd.exe生成C#对象.然后,调用web服务的管理器可以将这些强类型请求对象作为参数,将它们序列化为字符串以进行调用,将响应作为字符串返回,将它们反序列化为强类型响应对象并返回它们.

如果我有一个字符串列表,我可以有一个有效的XSD,它认为它是一个复杂类型的无界xs:选择xs:string元素,然后它会反序列化为一个字符串数组,这很好,处理起来很简单.令人烦恼的问题是,由于某种原因,似乎没有任何方法可以让它调用除" Items " 之外的任何字符串数组.无论什么我添加到架构,我不能让XSD.EXE写任何其他名称.

这是一个示例XSD架构:



    
        
            
                
            
        
    

由此产生的课程:

public partial class AccountStatusRequest {

    private string[] itemsField;

    [System.Xml.Serialization.XmlElementAttribute("AccountRowID", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=true)]
    public string[] Items {
        get {
            return this.itemsField;
        }
        set {
            this.itemsField = value;
        }
    }
}

我尝试将intellisense中的每个msdata:属性添加到选择和内部元素中,没有任何区别.

仅仅为了论证,我为该complexType添加了一些额外的类似选择,看看是否会强制它使用字符串数组的名称,而是它给了我Items,Items1,Items2 ......

我真的不希望它必须是一个只拥有字符串的自己类型的数组,但我也真的不想留下它叫做" Items ",没有xml注释(有没有人知道如何添加THOSE到一个xsd?),它应该有一个更具描述性的名称.我绝对不能只是手动将其更改为Web服务模式更改时所需的工作流程,即更改XSD然后从中重新生成类.

这似乎是xsd.exe应该支持的另一个东西.有什么我想念的吗?我应该以某种方式采取不同的方法吗?或者是否有一种替代工具可以用于此而不是跛脚?



1> 小智..:

尝试将选项更改为序列,并将最小值/最大值出现在AccountRowID元素中...

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有