我创建了一个虚类
Public MustInherit Class A
...
End Class
然后创建了两个类继承它
Public MustInherit Class B : Inherits A
Public AA As Single
End Class
Public MustInherit Class C : Inherits A
Public BB As Single
End Class
现在我想在主程序中使用Select Case语句在主程序中创建一个对象Obj
Sub Main()
Select i
Case 1
Dim Obj As New B
Case 2
Dim Obj As New B
End Select
Obj.AA=123
Obj.BB=234
End Sub
由于在主程序中我发确认创建的对象属于哪个类,因此上面的编码无法实现,不知有没有好办法仅创建一个对象Obj,在特定条件下实现为B类的功能或C类的功能。
我不想同时创建B类和C类的对象,因为在样可以节省内存空间,我知道我理解的对不对。
谢谢指教。
Public MustInherit Class A
...
End Class
然后创建了两个类继承它
Public MustInherit Class B : Inherits A
Public AA As Single
End Class
Public MustInherit Class C : Inherits A
Public BB As Single
End Class
现在我想在主程序中使用Select Case语句在主程序中创建一个对象Obj
Sub Main()
Select i
Case 1
Dim Obj As New B
Case 2
Dim Obj As New B
End Select
Obj.AA=123
Obj.BB=234
End Sub
由于在主程序中我发确认创建的对象属于哪个类,因此上面的编码无法实现,不知有没有好办法仅创建一个对象Obj,在特定条件下实现为B类的功能或C类的功能。
我不想同时创建B类和C类的对象,因为在样可以节省内存空间,我知道我理解的对不对。
谢谢指教。
只是在创建对象Obj后,没有办法再使用B类或C类的个性方法或字段,不知道有没有好的方法解决。
我看了几种创建形设计模式,但是好像都没有办法解决我的问题。
Sub Main()
Select i
Case 1
Dim Obj As New B
Case 2
Dim Obj As New C
End Select
Obj.AA=123
Obj.BB=234
End Sub
其中
Obj.AA=123
Obj.BB=234
会有编译错误,有没有办法解决
Dim Obj As New A
Select i
Case 1
Obj = New B
DirectCast(Obj, B).AA = 123
...
Sub Main()
Dim Obj As A
Select i
Case 1
Obj = New B
DirectCast(Obj,B).AA=123
Case 2
Obj = New C
DirectCast(Obj,C).BB=234
End Select
我先定义了基类第一个变量Obj,然后再后期创建对象B或C,并赋值给变量Obj,这应该是后期绑定,但是每次需要控制对象B或C的字段或方法时,必须使用DirectCast或Ctype方法进行类型转化,不使用DirectCast或Ctype方法还有其他的方法吗?谢谢。
B,C类继承自雷A
dim Obj as A
Select i
Case 1
Set Obj= New B
Case 2
Set Obj= New C
End Select
Obj.AA=123
Obj.BB=234
End Sub