返回与通用定义的一个不同的类型错误:“无法隐式转换类型列表<a> to List<tabletype>&#34;</tabletype></a>

时间:2014-03-07 22:29:43

标签: c# generics

我有泛型函数,返回泛型类型的List,但在某些情况下,我想返回类型A的元素的存储列表。我得到“无法隐式转换类型List<A>List<tableType>”:

    private List<A> allGroupsHolder = null;

    public List<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;
        }

        var table = db.GetTable<tableType>();
        return table.ToList();
    }

1 个答案:

答案 0 :(得分:0)

@MarkH和@Blablablaster通过评论帮我解决了这个问题。

我必须将返回的类型更改为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();
}

谢谢你们。