1

我有一个将数据返回给客户端的 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 时,一切正常,并且我的客户端应用程序接收数据。当我添加 clientCollection 时,出现异常。我得到的例外如下:

System.InvalidOperationException: '类型 System.Collections.Generic.List 1[[System.Collections.Generic.KeyValuePair2[[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
    ]
]
4

0 回答 0