Мне кажется, что он не может решить, какой метод использовать, потому что вы используете базовый тип обоих параметров метода.TargetOne / Two являются действительными базами TargetBase, поэтому оба метода выглядят одинаково для механизма разрешения - то есть он не может выбирать.
Однако я не знаю, почему другие изменения заставляют его работать ... позвольте мнедумаю, ожидается обновление.
В C # я не вижу этой проблемы, потому что вы не можете перенаправить приведение TargetBase к TargetOne или TargetTwo ... это дает другую ошибку компилятора - аргумент для метода недопустим, потому что он не может неявно преобразоватьбаза для вывода.Первая ошибка компилятора, которую вы упомянули, в основном эквивалентна VB.NET.
Я заметил эту ссылку, но я не уверен, подходит ли она для VB или VB.NET - в любом случае, интересно читать: http://msdn.microsoft.com/en-us/library/tb18a48w.aspx
Это также может относиться к Option Strict
и ко-дисперсии в VB.NET 2010. В этой статье есть небольшой раздел о перегрузках, который может оказаться полезным: http://msdn.microsoft.com/en-us/magazine/ee336029.aspx
Обновление: обратите внимание, что я понятия не имею, почему он вдруг работает, это звучит как для Джона Скита или Эрика Липперта.
Обновление 2: я могу предложить одну вещь для каждой ситуации(private to public / use of object) скомпилируйте приложение и просмотрите IL с помощью Reflector.По сути, ищите какие-либо различия - возможно, компилятор добавляет что-то для вас изнутри - либо это, либо среда выполнения может определить правильный метод на основе текущего типа.
Обновление 3: думаю, я его получил. Эта цитата по следующей ссылке:
"Объект ранним образом связывается, когда ему назначается переменная, объявленная как конкретный объектtype. "
http://visualbasic.about.com/od/usingvbnet/a/earlybind.htm
Говорит, что когда вы указываете TargetBase, он рано связывается и компилятор жалуется.Когда вы указываете объект, он связывается с поздним сроком, и среда выполнения жалуется, когда он закрывается по этой ссылке:
http://msdn.microsoft.com/en-us/library/h3xt2was(VS.80).aspx
Поэтому указание общественных работ для вас.Очевидно, что среда выполнения может позднее связывать с корректной перегрузкой - хорошая особенность позднего связывания, которая была скрыта для вас VB.NET: -)