.net 在运行时强制转换对象

.net 在运行时强制转换对象,.net,vb.net,inheritance,casting,abstract-class,.net,Vb.net,Inheritance,Casting,Abstract Class,请参阅下面的代码: Public Class Student Public Shared Function Factory(ByVal somecriteria As String) As Student 'Return either a PostGraduate or UnderGraduate based on some criteria End Function End Class Public Class PostGraduate Inher

请参阅下面的代码:

  Public Class Student
    Public Shared Function Factory(ByVal somecriteria As String) As Student
        'Return either a PostGraduate or UnderGraduate based on some criteria
    End Function
End Class

Public Class PostGraduate
    Inherits Student

End Class

Public Class UnderGraduate
    Inherits Student

End Class
假设我在应用程序中有如下代码:

Dim s as Student = Student.Factory(somecriteria)

根据Student.StudentFactory返回的内容,我如何在运行时将s变量强制转换为研究生或本科生?

很难理解您在这里想要实现什么,但要回答您的问题,您可以使用CType转换为具体类,使用GetType确定它是哪种类型的类首先:

Dim s As Student = Student.Factory("")
If s.GetType Is GetType(PostGraduate) Then
    Dim p As PostGraduate = CType(s, PostGraduate)
Else
    Dim u As UnderGraduate = CType(s, UnderGraduate)
End If

你不需要把他们转换成不同类型的学生。也许您应该改用接口?根据不同之处,基类上的StudentType属性也可能有所帮助。