Generic Extension Methods C# with Example
Just like other methods, extension methods can use generics. For example: static class Extensions { public static bool HasMoreThanThreeElements(this IEnumerable enumerable) { return enumerable.Take(4).Count() > 3; } } and calling it would be like: IEnumerable numbers = new List {1,2,3,4,5,6}; var hasMoreThanThreeElements = numbers.HasMoreThanThreeElements(); View Demo Likewise for multiple Type Arguments: public static TU GenericExt(this T obj) { TU ret = default(TU); // do some stuff with obj return ret; } Calling it would be like: IEnumerable numbers = new List {1,2,3,4,5,6}; var result = numbers.GenericExt,String>(); View Demo You can also create extension methods for partially bound types in multi generic types: class MyType { } static class Extensions { public static void Example(this MyType test) { } } Calling it would be like: MyType t = new MyType(); t.Example(); View Demo You can also specify type constraints with where : public static bool IsDefault(this T obj) where T : struct, IEquatable { return EqualityComparer.Default.Equals(obj, default(T)); } Calling code: int number = 5; var IsDefault = number.IsDefault(); View Demo