The type or namespace name 'T' could not be found

c#, generics

Solution

public static class Utility 
{  
    public static IEnumerable<T> Filter1<T>( // Type argument on the function
       this IEnumerable<T> input, Func<T, bool> predicate)  
    {  

If you dont care if its an extension method or not, you can add a generic constrain to the class. My guess is you want the extension method.

public static class Utility<T> // Type argument on class
{  
    public static IEnumerable<T> Filter1( // No longer an extension method
       IEnumerable<T> input, Func<T, bool> predicate)  
    {  

Problem

I have following code that I am compiling in a .NET 4.0 project ``` namespace ConsoleApplication1 { class Program { static void Main(string[] args) { } } public static class Utility { public static IEnumerable<T> Filter1(this IEnumerable<T> input, Func<T, bool> predicate) { foreach (var item in input) { if (predicate(item)) { yield return item; } } } } } ``` but getting following errors. I have System.dll already included as default in references. What I may be doing wrong? ``` Error 1 The type or namespace name 'T' could not be found (are you missing a using directive or an assembly reference?) Error 2 The type or namespace name 'T' could not be found (are you missing a using directive or an assembly reference?) Error 3 The type or namespace name 'T' could not be found (are you missing a using directive or an assembly reference?) ```

Original source