Значение типа <имяТипа1> невозможно привести к <имяТипа2>
Обновлен: Ноябрь 2007
Сообщение об ошибке
Значение типа '<имя_типа1>' невозможно преобразовать в '<имя_типа2>' Несоответствие типов может быть вызвано смешиванием файловой ссылки с ссылкой проекта на сборку '< имя_сборки >'. Попробуйте заменить файловую ссылку на '<имя_пути>' в проекте '<имя_проекта1>' на ссылку проекта '<имя_проекта2>'.
Value of type '<typename1>' cannot be converted to '<typename2>'. Type mismatch could be due to the mixing of a file reference with a project reference to assembly '<assemblyname>'. Try replacing the file reference to '<filepath>' in project '<projectname1>' with a project reference to '<projectname2>'.
В случае, когда проект делает проектную ссылку и файловую ссылку, компилятор не может гарантировать, что один тип может быть преобразован в другой.
Следующий псевдокод иллюстрирует ситуацию, которая может вызвать эту ошибку.
' ================ Visual Basic project P1 ================
' P1 makes a PROJECT REFERENCE to project P2
' and a FILE REFERENCE to project P3.
Public commonObject As P3.commonClass
commonObject = P2.getCommonClass()
' ================ Visual Basic project P2 ================
' P2 makes a PROJECT REFERENCE to project P3
Public Function getCommonClass() As P3.commonClass
Return New P3.commonClass
End Function
' ================ Visual Basic project P3 ================
Public Class commonClass
End Class
Проект P1 делает косвенную ссылку проекта посредством проекта P2 на проект P3, а также прямую файловую ссылку на P3. Объявление commonObject использует файловую ссылку на P3, в то время как при вызове P2.getCommonClass используется ссылка проекта на P3.
В этом случае проблема заключается в том, что файловая ссылка указывает путь к файлу и имя для выходного файла P3 (обычно p3.dll), ссылки проекта обозначают исходный проект (P3) по имени проекта. Таким образом, компилятор не может гарантировать, что тип P3.commonClass поступает из того же исходного кода через две различные ссылки.
Эта ситуация обычно возникает тогда, когда ссылка проекта и файловая ссылка смешиваются. В предыдущем примере проблема может не возникать, если P1 делает прямую ссылку проекта на P3 вместо файловой ссылки.
Идентификатор ошибки: BC30955
Исправление этой ошибки
- Измените файловую ссылку на ссылку проекта.
См. также
Задачи
Практическое руководство. Добавление или удаление ссылок в Visual Studio (Visual Basic)
Основные понятия
Другие ресурсы
Преобразование типов в Visual Basic