【发布时间】:2020-10-11 12:23:13
【问题描述】:
例如:我有一些类都继承自同一个类。
Public Class MasterClass
' content
End Class
Public Class ClassA
Inherits MasterClass
'content
End Class
Public Class ClassB
Inherits MasterClass
'content
End Class
Public Class ClassC
Inherits MasterClass
'content
End Class
我想决定运行时我需要哪一个。然后我可以这样做:
Private myInstance As MasterClass
If conditionA Then
myInstance = New ClassA
ElseIf conditionB Then
myInstance = New ClassB
Else
myInstance = New ClassC
End
但它可能会变得很长,而且我每次使用它时仍然必须投射它。
我可以将类型分配给变量,但我不知道如何使用该类型来创建该类型的新实例..
Dim storedType As Type = GetType(ClassA)
Dim someInstance = New storedType 'Does not work
有没有更好的方法?可以在运行时更改变量的类型吗?
【问题讨论】:
-
创作部分是“工厂”。是的,如果您需要对其进行硬编码,它可能会变得很长。根据您要执行的操作,可能会有基于反射的方法可以实现,因此您无需为工厂可能返回的每个可能的类添加代码(如果您想这样做,这甚至可能是必要的有某种插件支持,这些插件将从第三方发布或以与您的主程序不同的节奏发布。
标签: vb.net class type-conversion typeconverter