VB.NET не видит некоторые классы - PullRequest
1 голос
/ 17 июня 2011

Один из моих классов кажется невидимым для остальной части моего проекта.Интересно, нужно ли мне как-то инициализировать его, прежде чем я смогу использовать его общедоступные вещи.

Функции и методы Class1 немедленно появляются в IntelliSense, но Class2 обрабатывается как обычный (неизвестный) объект.

У меня есть Public Shared функции в Class1 и Class2.Я могу вызывать функции, используя

Class1.myPublicSharedFunction()

в обычном режиме.Однако, когда я пытаюсь сделать это с любой функцией из Class2, я получаю ошибку:

Error   1   Option Strict On disallows late binding.

, даже если их типы, конечно, объявлены.Если я скопирую и вставлю рабочую функцию из Class1 в Class2 и попытаюсь вызвать ее, она начнет выдавать ту же ошибку.Любая тестовая функция, которую я объявляю в Class2, не распознается своим типом и поэтому обвиняется в попытке выполнить позднюю привязку.

Оба класса являются общедоступными, и все упомянутые функции Public Shared.Я не понимаю, что заставляет классы работать по-другому.Это как если бы мне нужно было загрузить или скомпилировать Class2 до того, как VB узнает свои типы функций, но эти вещи предположительно автоматические в VB.

Что может быть причиной этого?

Когда я начинаю печатать Class2., списки IntelliSense являются функцией, а Class1 распознается как класс.

РЕДАКТИРОВАТЬ: Если я копирую точное содержимое Class2 вновый класс, только изменяя строку Public Class ... на новое имя, все работает как обычно.Я подумал, что это может быть слишком длинное имя, поэтому я скопировал класс в AnotherClassWithAReallyLongName, но этот тоже сработал.
Однако, если я удалю class2, добавлю его заново и вставлю обратно его содержимоеэто все равно не сработает.

1 Ответ

1 голос
/ 18 июня 2011

Согласно вашему комментарию в вашем коде есть что-то еще с именем `Class2 ', которое скрывает ваше новое определение класса. Удалите его / переименуйте, и ваш класс будет работать.

...