【发布时间】:2015-12-07 12:02:00
【问题描述】:
异常: 无法将类型“System.Collections.Generic.List
”隐式转换为 'System.Collections.Generic.List '
我不知道我犯了什么错误。这是我所遵循的结构:-
namespace XMailerData.DAL
{
public class Data : IData, IDisposable
{
XmailerEntities context = new XmailerEntities();
public List<PageContentModel> GetPageContent()
{
List<PageContentModel> lPageContent = (from pc in context.T_PageContent
select new PageContentModel
{
contentId = pc.ContentId,
description = pc.Description
}).AsEnumerable().ToList();
return lPageContent;
}
}
}
在上面的类中,我试图返回一个 List,其中包含从 linq 表达式生成的结果 PageContentModel 定义在同一个命名空间中,但类名不同。
namespace XMailerData.CompositeModel
{
public class PageContentModel
{
public int pageId { get; set; }
public int contentId { get; set; }
public string description { get; set; }
}
}
现在,在我的另一个名为 Classes 的类库中,我尝试调用该函数,如下所述
namespace Classes.Helper
{
public class DAL
{
public static List<PageContentModel> FetchPageContent()
{
IData iData;
List<PageContentModel> lPageContent = new List<PageContentModel>();
lPageContent = iData.GetPageContent(); // Here i'm getting an error
return lPageContent;
}
}
}
在这里,我试图将 iData.GetPageContent() 的结果绑定到另一个类中定义的另一个列表,但我没有这样做。
namespace Classes.CompositeModel
{
public class PageContentModel
{
public int pageId { get; set; }
public int contentId { get; set; }
public string description { get; set; }
}
}
在我的所有尝试中,我无法解决以下错误:-
异常:无法隐式转换类型 'System.Collections.Generic.List
' 到 'System.Collections.Generic.List '
有人可以帮助我克服这个问题并承认我犯了什么错误,因此我得到了这种类型的错误。
结论:
感谢您的洞察力,这真的很有帮助。现在我已经修改了我的代码,它现在可以正常工作了。这是我现在所做的。
namespace Classes.Helper
{
public class DAL
{
public static List<PageContent> FetchPageContent()
{
IData iData = new Data();
List<PageContent> lPageContent = new List<PageContent>();
lPageContent = iData.GetPageContent()
.Select(pc => new PageContent
{
pageId = pc.pageId,
contentId = pc.contentId,
description = pc.description,
}).ToList();
return lPageContent;
}
}
}
为避免歧义,我将属性类从 PageContentModel 重命名为 PageContent。感谢 Reza Aghaei、Monroe Thomas 和 Nikita 分享建议。 Reza Aghaei、Monroe Thomas 都可以接受,但无法接受两个答案,所以我接受一个答案并支持休息。
【问题讨论】:
-
虽然
XMailerData.CompositeModel.PageContentModel和Classes.CompositeModel.PageContentModel共享完全相同的属性,但它们是两种完全不同的类型。所以你应该转换(或构建)基于另一种类型的类型。 -
好的,我一从办公室回来,我会检查它们是否在多个程序集中编译。 @Alizera 我尝试转换它但没有成功。