System.InvalidOperationException:'在这种情况下,不能使用类型System.Collections.Generic.List`1。

时间:2018-11-15 11:07:59

标签: c# asmx webmethod keyvaluepair xmlinclude

我有一个将数据返回给客户端的asmx。 在asmx中,我有以下方法:

    [WebMethod]
    [XmlInclude(typeof(CustomField))]
    public List<CustomField> GetData(InitializeRequest request)
    {
        return xmlAccessLogic.GetData(request.Map()).Map();
    }

CustomField是我正在创建的自定义类型。此时,它看起来如下:

public class CustomField: Object
{
    public string Key { get; set; }
    public object Value { get; set; }

    public CustomField()
    {
    }

    public CustomField(string key, object value)
    {
        Key = key;
        Value = value;
    }
}

获取数据后,我将其作为List>返回,然后将其映射到CustomField对象的列表。

执行以下操作时出现错误:

List<KeyValuePair<string, Object>> clientcollection = new List<KeyValuePair<string, Object>>();
List<KeyValuePair<string, Object>> companiesCollection = new List<KeyValuePair<string, Object>>();

companiesCollection.Add(new KeyValuePair<string, Object>("Count", 1));
companiesCollection.Add(new KeyValuePair<string, Object>("HitsLeft", _hbXmlAccessRepository.GetNumberOfHitsLeft(request.UserName, request.PassWord)));

clientcollection.Add(new KeyValuePair<string, Object>("Vat", generalDataResult.VatNumber));

companiesCollection.Add(new KeyValuePair<string, Object>("firm", clientcollection));

return companiesCollection;

当我不将clientCollection添加到companiesCollection时,一切正常,我的clientapplication接收数据。 当我添加clientCollection时,出现异常。 我得到的异常如下:

  

System.InvalidOperationException:'类型System.Collections.Generic.List 1[[System.Collections.Generic.KeyValuePair 2 [[System.String,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089],[System.Object ,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]],mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]不在此上下文中使用。'

我忘记了什么? 我一直在环顾四周阅读,但是我还没有找到解决方案。

(我知道我的CustomField对象看起来像一个KeyValuePair,但是我们才刚刚开始,并且还会添加其他字段)

客户程序员的期望可能如下所示:

CompaniesCollection[
    Count="1"
    HitsLeft="248"
    firm[
        Vat=423584152
        Name= "Some Name"
        JurFormID=14
    ]
    firm[
        Vat=42358468
        Name= "Some Other Name"
        JurFormID=14
    ]
]

0 个答案:

没有答案