Extension methods are static methods, in static classes, marked up to be added to existing types without creating a new derived type, or modifying the original type. You can use extension methods to extend a class or interface. This feature was introduced in C# 3.0
In this example we will implement extension methods for two different data types: DateTime, and IEnumerable
This is the implementation of the methods in this example
The markup that makes these extension methods is the keyword this used before the first parameter in the parameter list of the method. This keyword is specific to C#, and it instructs the compiler to add the ExtensionMethodAttribute to the method
The first method produces a result like this:
The second method produces this result:
<METHOD SOFTWARE © 2014>
In this example we will implement extension methods for two different data types: DateTime, and IEnumerable
This is the implementation of the methods in this example
public static class ExtensionMethods
{
public static string ToLetterFormat(this DateTime dateTime)
{
return dateTime.ToString("MMMM d',' yyyy");
}
public static IEnumerable<string> GetOnlyStrings<T>(this IEnumerable<T> list)
{
foreach (var item in list)
{
if (item is string)
yield return item as string;
}
}
}
The markup that makes these extension methods is the keyword this used before the first parameter in the parameter list of the method. This keyword is specific to C#, and it instructs the compiler to add the ExtensionMethodAttribute to the method
The first method produces a result like this:
string letterFormatDate = (DateTime.Today).ToLetterFormat();
Console.WriteLine(letterFormatDate);
Console.ReadKey();
The second method produces this result:
customList.ForEach(l => Console.WriteLine(l.GetType().ToString()));
Console.ReadKey();
List<string> allStringsFromCustomList = customList.GetOnlyStrings().ToList();
Console.WriteLine(Environment.NewLine);
allStringsFromCustomList.ForEach(s => Console.WriteLine(s));
Console.ReadKey();
<METHOD SOFTWARE © 2014>