When using recursion in an extension method, there are two different ways to invoke the method from within itself.
Option 1: As an extension method
internal static class MyExtension { public static object DoThing(this MyType source, MyOtherType parameter) { // ... some stuff ... return source.DoThing(parameter.Property); } } Option 2: As a static method
internal static class MyExtension { public static object DoThing(this MyType source, MyOtherType parameter) { // ... some stuff ... return DoThing(source, parameter.Property); } } What would be the trade-offs of these options? I can imagine that there might be slight differences in performance, the possibility of the signature getting overwritten at a later date, etc.