Pages

Sunday, 28 June 2015

Extension Method

Extension Method

The extension method feature allowing to write methods associated with classes other than the class in which they are declared. For example I have a class like following:
class MyData
{
 private double D1;                              // Fields
 private double D2;
 private double D3;

 public MyData(double d1, double d2, double d3)  // Constructor
 {
  D1 = d1; D2 = d2; D3 = d3;
 }

 public double Sum()                             // Method Sum
 {
  return D1 + D2 + D3;
 }
}

When you want to add method to the class, we can use extension method. With following requirements:
  • The class in which the extension method is declared must be declared static.
  • The extension method itself must be declared static.
  • The extension method must contain as its first parameter type the keyword this,followed by the name of the class it is extending.
The syntax will be:
static class [Extension Class]
{ 
 public static [Return Type ][Method Name]( this [Class to be Extended] [Identifier])
 {
  ...
 }
}

Lets add a method to calculate average to MyData class.
static class ExtendMyData
{  
  public static double Average( MyData md )
  {
  return md.Sum() / 3;
 }
} 

And here's our Main method:
class Program
{
 static void Main(string[] args)
 {
  MyData md = new MyData(3, 4, 5); 
  Console.WriteLine("Average: "+ ExtendMyData.Average(md) );
 }
}

The output will be:
Average: 4

0 comments:

Post a Comment