从泛型函数返回通用列表

时间:2016-03-16 13:56:18

标签: c# list generics

我有一个通用的界面。

public interface IModel<T> 
{
   List<T> ReadModelInfo();
   .....
}

现在我有2个特定的类来实现该接口IModel<T>

Class IceModel<T> : IModel<T>
{
        List<T>ReadModelInfo<T>()
        {
           List<Product> pdList = GetList() 
           return pdList as List<T>();
        }
}

方法ReadModelInfo()会抛出错误:

  

作为无效的表达术语&#39;)&#39; :预期和)预期。

有没有人知道如何从特定列表中返回通用列表?

2 个答案:

答案 0 :(得分:2)

所以简单的答案是:

return pdList.Cast<T>().toList() 

但显然这只有在T是Product或Product的超类时才有效,所以这表明您的设计可能存在问题。

答案 1 :(得分:1)

这看起来像是对通用类型的错误使用。

class IceModel<T> : IModel<T>

应该可以用

代替
class IceModel : IModel<Product>

这样可以更自然地实现界面(这似乎是你想要做的事情吗?)

class IceModel : IModel<Product>
{
   List<Product> ReadModelInfo()
    {
       List<Product> pdList = GetList() 
       return pdList;
    }
}