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.