我有一个将数据返回给客户端的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
]
]