我有这个功能:
public static IList<T> myFunction<T>(IList<T> listaCompleta, int numeroPacchetti)
{
return listaCompleta;
}
但是如果我试着用它来调用它:
IList<SomeObject> listPacchetti = (from SomeObject myso in SomeObjects
select myso).ToList();
listPacchetti = myFunction(listPacchetti, 1);
编译时我说The type arguments for method 'myFunction<T>(IList<T>, int)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
事实是我需要使用IList(或集合索引,而不是IEnumerable),我需要将一个泛型对象传递给函数(这次是IList<SomeObject>
,下次可能是{{1 }})
我可以这样做吗?或者它呢?我认为我不能使用IList作为类型参数...
编辑 - 完整代码
IList<AnotherObject>
IList<Packet> listPacchetti = (from Packet pack in Packets
select pack).ToList();
listPacchetti = Utility.Extracts<Packet>(listPacchetti, 6);
答案 0 :(得分:3)
您的实用程序类是否已针对.NET Framework 3.0或更高版本进行编译,并且您的代码是否引用了System.Collections.Generic
命名空间?
那么,using System.Collections.Generic;
是否遗失?
答案 1 :(得分:3)
Markzzz:根据您发布的有关IList
错误的内容,我怀疑您导入了错误的命名空间。您的代码顶部需要using System.Collections.Generic
,我猜你有using System.Collections
。这就是编译器告诉你IList
不能用作通用的原因。
答案 2 :(得分:2)
试试这个;
public class SomeObject
{ }
public static List<T> MyFunction<T>(List<T> listaCompleta, int numeroPacchetti)
{
return listaCompleta;
}
static void Main(string[] args)
{
var someObjects = new List<SomeObject>();
var listPacchetti = (from SomeObject myso in someObjects
select myso).ToList();
listPacchetti = MyFunction<SomeObject>(listPacchetti, 1);
}