Проблема преобразования VB.NET при попытке преобразования из базового класса в подкласс (BC30311: «Значение типа« <тип1> »нельзя преобразовать в« <тип2> ») - PullRequest
1 голос
/ 16 ноября 2009

Пожалуйста, посмотрите на следующий код:

Public Sub Method(Of TEntity As EntityObject)(ByVal entity As TEntity)
    If TypeOf entity Is Contact Then  
        Dim contact As Contact = entity 'Compile error'
        Dim contact = DirectCast(entity, Contact) 'Compile error' 
        Dim contact = CType(entity, Contact) 'Compile error'
    End If
End Sub

Есть идеи?

Ответы [ 2 ]

1 голос
/ 16 ноября 2009

Любая из следующих работ, я думаю, я буду использовать первую:

Dim contact As Contact = DirectCast(entity, Object) 
Dim contact As Contact = Convert.ChangeType(entity, TypeCode.Object)
1 голос
/ 16 ноября 2009

Это не должно приводить к ошибке компиляции и должно приводить ее к типу, который вы ищете:

Dim contact As Contact = TryCast(entity, Contact) 
...