Получение 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
,