C# 返回与泛型定义的类型不同的错误:“1”;无法隐式转换类型列表<;A>;列出<;表格类型>&引用;
我有一个泛型函数,它返回泛型类型的列表,但在某些情况下,我想返回存储的A类型元素列表。我得到“无法将类型C# 返回与泛型定义的类型不同的错误:“1”;无法隐式转换类型列表<;A>;列出<;表格类型>&引用;,c#,generics,C#,Generics,我有一个泛型函数,它返回泛型类型的列表,但在某些情况下,我想返回存储的A类型元素列表。我得到“无法将类型List隐式转换为List”: private List allGroupsHolder=null; public List getAllObject(),其中tableType:class { if(typeof(tableType)=typeof(Group)) { if(groupHolderState) { groupHolderState=true; var t=db.GetTabl
List
隐式转换为List
”:
private List allGroupsHolder=null;
public List getAllObject(),其中tableType:class
{
if(typeof(tableType)=typeof(Group))
{
if(groupHolderState)
{
groupHolderState=true;
var t=db.GetTable();
allGroupsHolder=t.ToList();
}
返回所有groupsholder;
}
var table=db.GetTable();
return table.ToList();
}
@MarkH和@blablaster通过评论帮我解决了这个问题
我必须将返回的类型更改为IEnumerable
并使用Cast
private List<A> allGroupsHolder = null;
public IEnumerable<tableType> GetAllObjects<tableType>() where tableType : class
{
if (typeof(tableType) == typeof(Group))
{
if (groupHolderState)
{
groupHolderState = true;
var t = db.GetTable<Group>();
allGroupsHolder = t.ToList();
}
return allGroupsHolder.Cast<tableType>();
}
var table = db.GetTable<tableType>();
return table.ToList();
}
private List allGroupsHolder=null;
public IEnumerable GetAllObject(),其中tableType:class
{
if(typeof(tableType)=typeof(Group))
{
if(groupHolderState)
{
groupHolderState=true;
var t=db.GetTable();
allGroupsHolder=t.ToList();
}
返回allGroupsHolder.Cast();
}
var table=db.GetTable();
return table.ToList();
}
谢谢各位。为您的任务将
List
更改为IEnumerable
是否可行,以便您的函数只返回IEnumerable?在您的案例中,A
是什么?它是从tableType
派生的类吗?我可以,但问题是将A转换为tableType代码>@MarkH您的答案是可以的,但我还有更改列表到IEnumerable。@MarkH您能写下您的答案吗,我不想窃取您的分数;)
private List<A> allGroupsHolder = null;
public IEnumerable<tableType> GetAllObjects<tableType>() where tableType : class
{
if (typeof(tableType) == typeof(Group))
{
if (groupHolderState)
{
groupHolderState = true;
var t = db.GetTable<Group>();
allGroupsHolder = t.ToList();
}
return allGroupsHolder.Cast<tableType>();
}
var table = db.GetTable<tableType>();
return table.ToList();
}