Как передать аргумент IList <T>в функцию - PullRequest
2 голосов
/ 11 августа 2011

У меня есть эта функция:

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>, в следующий раз может быть IList<AnotherObject>)

Могу ли я это сделать?Или как насчет этого?Я думаю, что я не могу использовать IList в качестве аргумента типа ...

РЕДАКТИРОВАТЬ - Полный код

Я ВЫЗЫВАЮ ФУНКЦИЮ ИЗ ДРУГОГО КЛАССА

IList<Packet> listPacchetti = (from Packet pack in Packets
                                               select pack).ToList();

listPacchetti = Utility.Extracts<Packet>(listPacchetti, 6);

КЛАСС С ФУНКЦИЕЙ

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

Ответы [ 3 ]

3 голосов
/ 11 августа 2011

Ваш служебный класс скомпилирован для .NET Framework 3.0 или более поздней версии и содержит ли ваш код ссылку на пространство имен System.Collections.Generic?

Итак, using System.Collections.Generic; отсутствует?

3 голосов
/ 11 августа 2011

Markzzz: из ваших сообщений об ошибке, касающейся IList, я подозреваю, что вы импортировали неверное пространство имен.Вам нужно using System.Collections.Generic вверху кода, и я предполагаю, что у вас есть using System.Collections.Вот почему компилятор говорит вам, что IList нельзя использовать как универсальный.

2 голосов
/ 11 августа 2011

Попробуйте это;

    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);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...