Dynami c object throwing 'не содержит определения для ...' исключения, когда член существует в коллекции - PullRequest
0 голосов
/ 09 июля 2020

У меня проблема с этим фрагментом кода:

IList<dynamic> list = await GetApiUrl("EndpointName").GetJsonListAsync(); // Call to API using FLUrl

List<Model> modelList = new List<Model>();
foreach(var item in list) 
{
    var model = new Model() 
    {
        GuidId = new Guid(item.Id),
        Name = item.Name
    }

    modelList.Add(model);
}

public class Model 
{
    public Guid GuidId { get; set; }
    public string Name { get; set; }
}

Пример ответа API:

[
    {
        "Id": "9232f70b-bdc6-402c-9fab-250977e9a0c1",
        "Name": "Sample name"
    },
    {
        "Id": "0f746670-e057-4c13-9a82-c98419d09e55",
        "Name": "Sample name"
    },
    {
        "Id": "370cce64-37f6-4e71-a44e-32168c3ef2cb",
        "Name": "Sample name"
    }
]

Я получаю это исключение при доступе к item.Id или item.Name даже хотя я подтвердил, что объект item имеет элементы Id и Name (см. прикрепленное изображение ниже).

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 
''System.Dynamic.ExpandoObject' does not contain a definition for 'Id''

введите описание изображения здесь

Что я здесь делаю не так?

1 Ответ

0 голосов
/ 09 июля 2020

Я обнаружил причину проблемы, но это довольно странно.

Код является частью приложения Xamarin. Android, и с тех пор, как я начал работать над проектом, настройки исключений в IDE были странными для меня, потому что для всех исключений отключен параметр «Прерывание при возникновении этого исключения». Вчера (потому что мне надоело копаться в файлах, чтобы найти, где было выброшено исключение) я включил этот флажок, чтобы увидеть, где было выбрано исключение во время выполнения вместе с деталями исключения.

* 1004 Я запустил приложение без отладки, и оно действительно сработало (хотя исключение все еще генерировалось). Затем я вспомнил, что сделал вчера, и отменил настройки исключений в IDE, и TA DAAA, это сработало.

Думаю, это как-то связано с Xamarin и тем, как он обрабатывает исключения. Если кто-то сможет уточнить это поведение, я с радостью приму его / ее ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...