Структурам не нужны были бы интерфейсы, если бы this передавался в extension functions по ссылке, а не по значению (для структур)
struct BookInfo
{
string Title;
}
static class SimpleBookExtensions
{
// так можно
public static void Print(this BookInfo info) {}
// а так почему-то нельзя
public static void Print(ref this BookInfo info) {}
}
Почему вторым способом не делают?
http://stackoverflow.com/questions/2618 … on-methods
http://stackoverflow.com/questions/6528 … y-ref-in-c
http://stackoverflow.com/questions/1809 … on-methods
http://stackoverflow.com/questions/1891 … e-ref-this
"in VB you can already use ByRef extension methods"
https://github.com/dotnet/roslyn/issues/165
https://github.com/dotnet/csharplang/issues/186