C# 如何通过ILST<;T>;函数中的参数

C# 如何通过ILST<;T>;函数中的参数,c#,function,collections,C#,Function,Collections,我有这个功能: public static IList<T> myFunction<T>(IList<T> listaCompleta, int numeroPacchetti) { return listaCompleta; } 公共静态IList myFunction(IList listaCompleta,int numeriopacchetti) { 返回listaCompleta; } 但如果我试着用以下方式来称呼它: IList<

我有这个功能:

public static IList<T> myFunction<T>(IList<T> listaCompleta, int numeroPacchetti)
{
    return listaCompleta;
}
公共静态IList myFunction(IList listaCompleta,int numeriopacchetti)
{
返回listaCompleta;
}
但如果我试着用以下方式来称呼它:

IList<SomeObject> listPacchetti = (from SomeObject myso in SomeObjects
                                  select myso).ToList();

listPacchetti = myFunction(listPacchetti, 1);
IList listPacchetti=(来自SomeObject中的SomeObject myso
选择myso.ToList();
listPacchetti=myFunction(listPacchetti,1);
当我编译它时,它说
方法“myFunction(IList,int)”的类型参数不能从用法中推断出来。尝试显式指定类型参数。

事实上,我需要使用IList(或集合索引,而不是IEnumerable),并且我需要向函数传递一个泛型对象(这次是
IList
,下次可能是
IList

我能做吗?或者呢?我认为我不能使用IList作为类型参数

编辑-完成代码

我从另一个类调用函数
IList listPacchetti=(来自数据包中的数据包
选择pack.ToList();
listpachetti=Utility.Extracts(listpachetti,6);
函数类
公共类实用程序
{   
公用事业()
{
}
公共静态IList Extracts(IList listaCompleta,int numeriopacchetti)//这里是带有警告的行
{
返回listaCompleta;
}
}
试试这个

    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);
    }
公共类SomeObject
{ }
公共静态列表MyFunction(列表listaCompleta,int numeriopacchetti)
{
返回listaCompleta;
}
静态void Main(字符串[]参数)
{
var someObjects=新列表();
var listPacchetti=(来自someObjects中的SomeObject myso
选择myso.ToList();
listPacchetti=MyFunction(listPacchetti,1);
}

您的实用程序类是否为.NET Framework 3.0或更高版本编译,并且您的代码是否引用了
System.Collections.Generic
命名空间


因此,
是否使用System.Collections.Generic丢失?

Markzzz:从您发布的有关IList的错误信息来看,我怀疑您导入了错误的命名空间。您的代码顶部需要一个
using System.Collections.Generic
,我猜您的
using System.Collections
。这就是为什么编译器告诉您不能将
IList
用作泛型。

我觉得这段代码不错。确切的编译器错误是什么?添加了整个主题的错误…嗯,没有歧义
T
必须推断为
SomeObject
。我怀疑错误在别处。@cdhowie:不,我只在那里得到错误。如果我添加了,我就解决了问题,但是函数上仍然有一些警告:
System.Collections.IList不能用作泛型类型
hi,我可以编译代码,没有警告或错误(.NET 4)。你在编译.NET的哪个版本?@markzzz-你确定是同一个错误吗?您列出的错误应该通过显式提供类型参数来解决,就像iain所做的那样。如果这不起作用,那么您的错误与您发布的代码无关!是的,它可以工作,但有一个警告:System.Collections.IList不能用作泛型类型。不太好的代码…更改为列表我将更改示例好的,我认为问题是我们正在查看不同的代码:)您能用实际代码更新问题并指出警告的位置吗?我可以看得更清楚。是的……这就是问题所在:)
public class Utility
{   
    public Utility()
    {

    }

    public static IList<T> Extracts<T>(IList<T> listaCompleta, int numeroPacchetti)    // HERE THERE IS THE LINE WITH WARNINGS
    {
        return listaCompleta;
    }
}
    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);
    }