2015-01-27 3 views
1

Я пытаюсь написать метод расширения для класса List для метода ConvertAll (по крайней мере, метод, который имеет ту же подпись) и у меня есть этотРеализация ConvertAll как метод расширения

public static class ListExtensionsClass 
    { 
     public static List<TOutput> ConvertAll<TOutput>(this List<T> listInstance, Converter<T, TOutput> converter) 
     { 
      return null; 
     } 
    } 

, но я получаю error CS0246: The type or namespace name 'T' could not be found (are you missing a using directive or an assembly reference?)

Что мне не хватает?

EDIT: версия .NET, которую я использую, не имеет этого метода, и мне нужно/нужно написать ее как расширение, так что мне не нужно модифицировать какой-либо существующий код, который уже использует этот метод.

+1

Невозможно назвать этот метод. Каждый раз, когда вы пытаетесь, вы просто вызываете метод экземпляра списка. – Servy

+1

Что будет делать ваш метод, который 'Select' из LINQ не может сделать? – nvoigt

ответ

5

Вы не определили T как параметр типа. Добавьте его.

public static List<TOutput> ConvertAll<T, TOutput>(this List<T> listInstance, 
                Converter<T, TOutput> converter) 
+0

Когда я сказал такую ​​же подпись, я на самом деле имел в виду точно так же, как оригинальный ConvertAll. В вашем примере, когда вам нужно вызвать вашу функцию, вам нужно добавить дополнительный параметр типа между <> – Sil

+0

@Sil Ну, вы не можете, потому что метод расширения, который имеет одно и то же имя и параметры сайта, как экземпляр метод никогда не будет выбран в предпочтении методу экземпляра. Если я переименую метод расширения в 'ConvertAlll', я с радостью могу сделать следующее:' new [] {1,2,34,4} .ToList(). ConvertAlll (a => (double) a); ', поэтому Я не совсем уверен, что вы пытаетесь мне сказать. – spender

+0

У меня есть код, который использует метод ConvertAll, и я не хочу его изменять ... Я просто хочу добавить метод ConvertAll в качестве расширения класса List, потому что List в версии .NET, которую я использую не имеет метода ConvertAll. – Sil

Смежные вопросы