Почему VB.Net не может найти метод расширения интерфейса?

У меня есть библиотека C #, которая имеет метод расширения, что-то вроде:

public interface ISomething { ... }
public class SomethingA : ISomething { ... }
public class SomethingB : ISomething { ... }

public static class SomethingExtensions 
{
    public static int ExtensionMethod(this ISomething input, string extra) 
    {
    }
}

Расширение отлично работает, если вызывается из C #, но имеет проблему, если вызывается из внешнего приложения VB.Net:

Dim something = Me.SomethingManager.GetSomething(key)
Dim result = something.ExtensionMethod("extra")

Это прекрасно компилируется, но выдает исключение во время выполнения:

Public member 'ExtensionMethod' on type 'SomethingB' not found.

Если VB.Net изменяется, чтобы явно сделать тип интерфейсом, на котором он работает:

Dim something as ISomething = Me.SomethingManager.GetSomething(key)
Dim result = something.ExtensionMethod("extra")

Зачем? Почему метод расширения работает с интерфейсом, а не с классом, который его реализует? У меня была бы та же самая проблема, если бы я использовал подкласс? Является ли реализация расширенных методов в VB.Net неполной?

Что я могу сделать в библиотеке C #, чтобы VB.Net работал без явного интерфейса?

Ответы на вопрос(4)

Ваш ответ на вопрос