【问题标题】:Why when I Import .discomap from webservice it gets an Array instead of a List?为什么当我从 webservice 导入 .discomap 时,它会得到一个数组而不是一个列表?
【发布时间】:2012-09-18 12:20:15
【问题描述】:

我有一个网络服务,有这个定义的类:

[Serializable]
public class Parameter
{
    public Parameter()
    {
    }

    public List<MyObject> list { get; set; }
}

好吧,在另一个项目/webservice 上,我通过 discomap/wsdl 导入引用,我写了这个:

[WebMethod(EnableSession = true)]
public void UpdateOrdineFoto(List<MyObject> list)
{
    Parameter par = new Parameter();
    par.list = list;
}

但它说“无法在 System.Collections.Generic.List&lt;MyClass.MyObject&gt;MyClass.MyObject[] 之间进行隐式转换

这是什么意思?两者都使用System.Collections.Generic;List&lt;MyObject&gt;...

【问题讨论】:

    标签: c# .net web-services list class


    【解决方案1】:

    我猜您使用某种工具(添加 WebReference 或其他工具)从 WSDL 创建了本地模型 - 对吧?

    你知道了 - 它将列表作为数组导入 - 就是这样 - 去寻找它,大多数工具都允许你更改它,或者你可以手动更改它。

    PS: 所以你使用了 Add Webservice - 应该是这样的: 只需在此处更改它以使用通用列表。

    【讨论】:

    • 是的,我使用了“添加 WebReference”。检查 .wsdl 我发现 &lt;s:element minOccurs="0" maxOccurs="1" name="list" type="tns:ArrayOfMyObject" /&gt; ?我应该把它改成?
    • 右键单击服务引用,然后单击“配置”。你应该会看到这个对话框。
    • 另外,有一些数组和一些列表,我需要为这个本地类打开列表......不是每个人。我应该明白我应该在 wsdl 中写什么
    • 然后尝试更改生成的代码 - 应该不难
    • 因为您似乎使用了另一个(版本?)生成工具,我不知道在哪里可以找到它 - 但您应该能够使用 VS 功能(goto 定义等)来找到类/属性的文件 - 然后只需使用您的 C# 知识...
    猜你喜欢
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 2017-10-21
    相关资源
    最近更新 更多