Generic Interfaces - .Net

Sukhpinder Singh - Jun 4 '21 - - Dev Community

C# compiler allows using interfaces generic types.

Learning Objective

  • How to create generic interfaces of type T

  • How to implements a generic interface in a non-generic class

  • How to implements a generic interface in a generic class

Prerequisites

Please go through the basic concepts of generics for a better understanding of the article.
What is Generics in C#
Multiple Generic Constraints .Net

Getting Started

Let us understand how to create an interface of type T. A blank interface will look like this.

    public interface ITest<T> { }
Enter fullscreen mode Exit fullscreen mode

An interface with one member function definition

    public interface ITest<T> {
       List<T> GetList();
    }
Enter fullscreen mode Exit fullscreen mode

The syntax for multiple generic values for an interface

    public interface ITest<T, U>{
      List<T> GetList(U value);
    }
Enter fullscreen mode Exit fullscreen mode

After understanding the basic syntax for interface with single or numerous generic types. Let's see how to implement them in a class.

Implementation in a non-generic class

The implementation is divided into two cases:

Case 1: Single generic type interface with non-generic class

The below example shows if we do not define the “T” type. Please refer ITest definition above.

    public class Test : ITest<T>{
      public List<T> GetList(){}
    }
Enter fullscreen mode Exit fullscreen mode

The compiler will throw an exception that it's not able to understand the reference of T.

Solution: Let’s define the type “T.”

    public class Test : ITest<int>{
       public List<int> GetList(){return null;}
    }
Enter fullscreen mode Exit fullscreen mode

Case 2: Multiple generic type interface with non-generic class

In the case of non-generic classes, as mentioned above, we must define the genetic types. Please refer ITest definition above.

    public class Test : ITest<int, int>{
       public List<int> GetList(int value){return null;}
    }
Enter fullscreen mode Exit fullscreen mode

Implementation in a generic class

The implementation is again divided into two cases:

Case 1: Single generic type interface with a generic class

Please refer ITest definition above.

    public class Test<T> : ITest<T>{
      public List<T> GetList(){return null;}
    }
Enter fullscreen mode Exit fullscreen mode

Case 2: Multiple generic type interface with a generic class

Please refer ITest definition above.

    public class Test<T, U> : ITest<T, U>{
       public List<T> GetList(U value){return null;}
    }
Enter fullscreen mode Exit fullscreen mode

Thank you for reading, and I hope you liked the article. Please provide your feedback in the comment section.

Follow me on

C# Publication, LinkedIn, Twitter, Dev.to, Pinterest, Substack, Wix.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .