Wednesday, 23 January 2019

Extension method with example

What are extension methods?


Extension methods enable you to add methods to existing types without creating a new derived type, recompiling, or otherwise modifying the original type. 

An extension method is a special kind of static method, but they are called as if they were instance methods on the extended type.

How to use extension methods?


An extension method is a static method of a static class, where the "this" modifier is applied to the first parameter. The type of the first parameter will be the type that is extended.

Extension methods are only in scope when you explicitly import the namespace into your source code with a using directive.

Program to show how to use extension methods


Create a project Class Library as:

extMetLib.gif
  1. using System;  
  2. using System.Text;  
  3.   
  4. namespace ClassLibExtMethod  
  5. {  
  6.     public class Class1  
  7.     {  
  8.         public string Display()  
  9.         {  
  10.             return ("I m in Display");  
  11.         }  
  12.   
  13.         public string Print()  
  14.         {  
  15.             return ("I m in Print");  
  16.         }  
  17.     }  
  18. }  
Now create a new project using "File" -> "New" -> "Project...".

extMetProject.gif

Add the reference of the previously created class library to this project.

addRefLib.gif

Use the following code and use the ClassLibExtMEthod.dll in your namespace:
  1. using System;  
  2. using System.Text;  
  3. using ClassLibExtMethod;  
  4.   
  5. namespace ExtensionMethod1  
  6. {  
  7.     public static class XX  
  8.     {  
  9.          public static void NewMethod(this Class1 ob)  
  10.         {  
  11.             Console.WriteLine("Hello I m extended method");  
  12.         }  
  13.     }  
  14.   
  15.     class Program  
  16.     {  
  17.         static void Main(string[] args)  
  18.         {  
  19.             Class1 ob = new Class1();  
  20.             ob.Display();  
  21.             ob.Print();  
  22.             ob.NewMethod();  
  23.             Console.ReadKey();  
  24.         }  
  25.     }  
  26. }  
You can see the extension method with an arrow (different from the normal method sign), since they were instance methods on the extended type. See the figure below:

extensionMethod.gif

Output of the preceding program

extensionMethod1.gif

Benefits of extension methods

  • Extension methods allow existing classes to be extended without relying on inheritance or having to change the class's source code.
  • If the class is sealed than there in no concept of extending its functionality. For this a new concept is introduced, in other words extension methods.
  • This feature is important for all developers, especially if you would like to use the dynamism of the C# enhancements in your class's design.

No comments:

Post a Comment