2013-12-24 3 views
0

Попытка получить данные из службы и привязать его к сеткеПолучение NotImplementedException на Еогеасп

Я получаю данные в localitem и происходит ошибка на линии «Еогеасп»

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

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(); 
     } 
    } 
} 

EDIT:

GetLocalInfoForPerson имеет тип Personalinformation

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

Просьба показать полную трассировку стека. (Непонятно, почему у вас есть бессмысленный блок catch или слишком много пробелов в вашем вопросе ... Я исправлю последнее, но, пожалуйста, обратите внимание на читабельность в будущем.) –

+1

catch-фраза полностью избыточна и поэтому бессмысленна. –

+0

Я намерен изменить блок catch, нужно сначала запустить методы – Nathaniel

ответ

1

Какой конкретный тип GetLocalInfoForPerson? Правильно ли он реализует IEnumerable?

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

Вы получаете сообщение об ошибке, если вы измените объявление localItem быть:

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

?

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

+0

Я получаю эту ошибку, когда я изменить декларацию localItem - 'Ошибка \t \t 1 Не удается неявно преобразовать тип«PersonalIDCheckerMvCKendo.PersonalInfoService.PersonalInformation»в«System.Collections.Generic.IEnumerable » , Явное преобразование существует (? Вы пропали без вести слепок) ' GetLocalInfoForPerson имеет тип Personalinformation 'общественный частичный класс Personalinformation: объект, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged, System.Collections.IEnumerable' – Nathaniel

+0

Затем PersonalInformation не реализует IEnumrable должным образом. Взгляните в код, как выглядит метод «GetEnumerator» в этом классе? – driis

+0

'public System.Collections.IEnumerator GetEnumerator() { throw new NotImplementedException(); } ' Как его изменить? – Nathaniel

Смежные вопросы