System.InvalidOperationException: 'Тип System.Collections.Generic.List`1 нельзя использовать в этом контексте.' - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть 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;
    }
}

Когда я получаю свои данные, я возвращаю их в виде списка>, который затем сопоставляется со списком моего объекта 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.KeyValuePair 2 [[System.String, mscorlib, Версия = 4.0.0.0, Культура = нейтральная, PublicKeyToken = b77a5c561934e089], [System.Object, mscorlib , Версия = 4.0.0.0, Культура = нейтральная, PublicKeyToken = b77a5c561934e089]], mscorlib, Версия = 4.0.0.0, Культура = нейтральная, 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
    ]
]
...