What are Extension methods ?
Introduced in .NET 3.0, they are one of the most widely used feature today. If you have been using LINQ, then you must have been using the methods like FirstOrDefault, ToList, SingleOrDefault etc.. All these methods are nothing but the extension methods.
So to be more precise, they are the static methods defined in a class, but most importantly, can be used with built in types like int, string etc., without the need to extend them. This means, if you would like to check whether an integer has a valid value or not (I know we already have methods like TryParse), you can simply create an extension method and that will be available for all integer types that you declare. Let’s discuss with an example.
Create a new class library and add a class named CustomExtensionMethods. It doesn’t matters what the class name is, but its the syntax of writing the extension method that matters. Next, we add a static method to check whether the integer value is greater then hundred or not. The syntax of an extension method requires that
- Method must be static type.
- First parameter of the function must be of the type on which this method is to be used, and must precede with this keyword.
Even if you check out the definition of the LINQ extension methods, you can see that they have the same syntax.
Inside the function we can have whatever implementation we need. Since our method will be working on integer type variables, our first parameter will be of an integer type, preceded by this keyword. Inside the function, we can add our logic. Return type of the function will be boolean, based on whether the input was greater then 100 or not. So our extension method will be like the below :
And that’s it. Our function is ready to be used now. Compile the code and add the library reference in your code. Declare any integer value and you can see your extension method in the list of available methods for that type.
That was quite simple. So just create a smart library of yours and add as many extension methods as you would like to and use them in the code. So easy to use. The best part is that you can use these in cases, where you would like to add methods to an existing library, which you can’t extend by inheritance. Hope you enjoyed reading it…!!!