The Protocol Pattern
In C# (and F#), one can define extension methods on interfaces. These extension methods can have implementations, which can be used as default implementations for implementors of the extension. I haven't heard a name for this technique.
Example:
[code lang="csharp"]
interface IFoo
{
}
static class IFoo_Extensions
{
public static void Foo …