Неверные типы в VB.NET - PullRequest
2 голосов
/ 07 мая 2011

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

[A]System.Collections.Generic.List`1[Product] cannot be cast to
[B]System.Collections.Generic.List`1[Product].
Type A originates from 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
in the context 'LoadNeither' at location 'C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'.
Type B originates from 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
in the context 'LoadNeither' at location 'C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'.

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

Dim products As List(Of Product) = AppDAL.FindProducts(New ProductSearchEventArgs(SearchText, ProductSearchEventArgs.TextCriteria.Contains))

Подпись моего метода:

Public Shared Function FindProducts(e As ProductSearchEventArgs) As List(Of Product)

Ни у продукта, ни страницы, вызывающей метод FindProducts или класса AppDAL, нет пространств именЯ не могу понять, почему это не работает

Ответы [ 3 ]

2 голосов
/ 07 мая 2011

Я подозреваю, что проблема в том, что у вас есть 2 отдельных определения Product, возможно, путем копирования файла класса между проектами;этого недостаточно, так как типы определяются их сборкой.Вам нужна ссылка между проектами, чтобы они оба использовали один и тот же тип.

0 голосов
/ 07 мая 2011

Я столкнулся с подобной проблемой; после большого разочарования он исчез после перезапуска VS, принудительного полного получения (если вы используете контроль версий) и полной перестройки. Я понятия не имею, поможет ли это в вашей ситуации.

0 голосов
/ 07 мая 2011

Хотя вы не можете установить пространство имен в коде, VB всегда имеет имя пространства имен по умолчанию в свойствах проекта. Вы пробовали Dim products As List(Of AppDAL.Product) =?

...