.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属性也可能有所帮助。