Extension Methods - add methods to class
Consider the following class
public class Person
{
public string FirstName { get; set; }
private string LastName { get; set; }
protected string Email { get; set; }
public int Age { get; set; }
virtual public void showName()
{
Console.WriteLine("base class");
}
}
To
add additional methods to a class you have to subclass it or add the
function directly to the class. If the class is sealed then you will
have very limited options only.
In
C#, you can use the new extension method feature to add a new method to
an existing type. To add the method to the existing class, define a new
static class and define the
extension method (a static method) within it like the following
static class ExtensionMethods
{
public static string AddMarks(this Person per,double marks1, double marks2)
{
return (marks1 + marks2).ToString();
}
}
The
first parameter of an extension method is prefixed by the this keyword,
followed by the type it is extending (Person in this example,
indicating to the compiler that this extension method must be added to
the Person class). The rest of the parameter list (if any) is then the
signature of the extension method.
(In the figure you can see the new extension method for the Person object )
If an extension method has the same signature as another method in the class it is trying to extend, the method in the class will take precedence and the extension method will be ignored.