Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回与泛型定义的类型不同的错误:“1”;无法隐式转换类型列表<;A>;列出<;表格类型>&引用;_C#_Generics - Fatal编程技术网

C# 返回与泛型定义的类型不同的错误:“1”;无法隐式转换类型列表<;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

我有一个泛型函数,它返回泛型类型的列表,但在某些情况下,我想返回存储的A类型元素列表。我得到“无法将类型
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();
}