Writing extension functions in C#
There are two interfaces provided for writing extension functions in C#:
- The simple interface allows a function to be implemented using a lambda expression. 
- The full interface allows a function to be written as an implementation of the interface ExtensionFunctionDefinition.