Получение NotImplementedException на foreach

Попытка получить данные из сервиса и привязать их к сетке

Я получаю данные в localitem, и ошибка появляется в строке "foreach"

любая помощь будет оценена

private IEnumerable<PersonalIDCheckerMvCKendo.Models.PersonInfo> Getlocalinfo(string personalNO)
{
    needsUpdate = false;

    using (PersonalInfoServiceClient serviceclient = new PersonalInfoServiceClient())
    {
        List<PersonalIDCheckerMvCKendo.Models.PersonInfo> personInfo = new List<PersonalIDCheckerMvCKendo.Models.PersonInfo>();

        try
        {
            IEnumerable localItem = serviceclient.GetLocalInfoForPerson(personalNO);

            if (localItem != null)
            {
                foreach (PersonalIDCheckerMvCKendo.Models.PersonInfo dalitem in localItem)
                {
                    personInfo.Add(new PersonalIDCheckerMvCKendo.Models.PersonInfo
                    {
                        DocumentSerie = dalitem.DocumentSerie,
                        DocumentNumber = dalitem.DocumentNumber,
                        DocumentType = dalitem.DocumentType,
                        DocumentIssuer = dalitem.DocumentIssuer,
                        DocumentValidDate = dalitem.DocumentValidDate
                    });                        
                }
            }
            return personInfo.ToArray();
        }
        catch
        {
            throw;
        }
        finally
        {
            serviceclient.Close();
        }
    }
}

РЕДАКТИРОВАТЬ:

GetLocalInfoForPerson имеет тип PersonalInformation

public partial class PersonalInformation : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged , System.Collections.IEnumerable 

1 ответ

Какой конкретный тип делает GetLocalInfoForPerson вернуть? Это реализует IEnumerable должным образом?

Исходя из вашего примера кода, трудно сказать, что может быть не так, поскольку мы не знаем, какие типы используются. Тем не менее, вы вводите localItem как IEnumerableи если это пользовательская реализация, возможно, кто-то забыл реализовать неуниверсальный GetEnumerator метод.

Вы получаете ошибку, если вы меняете декларацию localItem быть:

IEnumerable<PersonalIDCheckerMvCKendo.Models.PersonInfo> localItem = serviceclient.GetLocalInfoForPerson(personalNO);

?

Это будет означать, что IEnumerable.GetEnumerator не реализовано (т.е. создает исключение NotImplementedException), в то время как IEnumerable<T>.GetEnumerator на самом деле реализуется. Возможно также, что оба метода не реализованы. Посмотрите это в коде для типа, который возвращается из GetLocalInfoForPerson,

Другие вопросы по тегам