在foreach上获取NotImplementedException

时间:2013-12-24 11:20:51

标签: c# asp.net-mvc exception notimplementedexception

尝试从服务获取数据并将其绑定到网格

我在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 个答案:

答案 0 :(得分:1)

GetLocalInfoForPerson返回什么样的具体类型?它是否正确实施IEnumerable

根据您的代码示例,很难说出可能出现的问题,因为我们不知道所涉及的类型。但是,您将localItem键入IEnumerable,如果这是自定义实现,则有人可能忘记实现非通用GetEnumerator方法。

如果您将localItem的声明更改为:

,是否会收到错误消息
IEnumerable<PersonalIDCheckerMvCKendo.Models.PersonInfo> localItem = serviceclient.GetLocalInfoForPerson(personalNO);

这意味着IEnumerable.GetEnumerator未实现(即抛出NotImplementedException),而IEnumerable<T>.GetEnumerator实际上已实现。也可能是两种方法都没有实现。在代码中查找从GetLocalInfoForPerson返回的类型。