代码之家  ›  专栏  ›  技术社区  ›  Chris Marisic

外部服务的WSDL处理实践

  •  0
  • Chris Marisic  · 技术社区  · 15 年前

    为此生成代理和datacontract程序集的正确方法是什么?

    我从

    XSD.exe /c /language:CS user.xsd 
    

    然后仅使用我的类文件“datacontracts.dll”构建该程序集

    svcutil.exe user.wsdl /n*:SomeNameSpace /r:datacontracts.dll /noconfig
    

    在从XSD生成的类中,我注意到每个类定义都有

    [XmlType(Namespace = "urn:/crmondemand/xml/...")]
    

    我是否需要将该属性放置在重复类上的方式,在我将其设置为单数类的每个类中显示一次?这样我就可以

    [XmlType(Namespace = "urn:/crmondemand/xml/user")]
    [XmlType(Namespace = "urn:/crmondemand/xml/campaign")]
    [XmlType(Namespace = "urn:/crmondemand/xml/lead")]
    public class SharedClass
    

    还是我的做法不对?

    2 回复  |  直到 15 年前
        1
  •  1
  •   dovholuk    15 年前

    首先是一个警告。。。你可能知道-但如果你不知道,我肯定会说修剪生成的代码是一个灾难的食谱。。。

    我觉得这是难以置信的短视。我更喜欢重复使用任何类型的我可以。。。然而,对于.NET,我发现这非常困难。。。我发现的最接近的东西是一个叫做WSCF的工具。它做了一些我非常喜欢的事情,比如为每个类发出单独的cs文件。这使得从其他源“覆盖”它们变得非常容易——只要源生成可序列化的等价物即可。。。

    我使用WSCF(classic mind you)时遇到的问题是,它没有实现“xml命名空间”到“c#命名空间”的映射。。。事实上,我必须自己把它添加到工具中(我试图将其重新投入到项目中,但从未收到回音(很遗憾)

    希望这对你有帮助。。

        2
  •  0
  •   Daniel Brückner Pradip    15 年前

    下面的工作不符合预期吗?

    svcutil *.wsdl *.xsd /language:C#