是否可以动态更改类中对象的类型?
说,我有一个Filter类,它指定特定ObjType对象列表的过滤条件
Public Class PropertyFilter
Public Property ObjectType as MyObjectsTypeEnum
Public Property MainObjectProperty As ??? OBJECT
End Class
说,当我更改对象类型时,我想更改MainObjectProperty
的类型
说,对于Person
,主要属性可以是Name
(字符串类型),但对于Shpere
,主要对象可以是Radius
}(双类型)。
我知道我可以使用泛型类,但这不是我想要的。 在真正的类中说我有更多的属性,当ObjectType更改时应该更改,并且将使用Filter的用户不必担心MainObjectProperty类型,只需要更改Object类型 - 它就是全部。
答案 0 :(得分:1)
这可能是仿制药的解决方案。这允许您具有类型参数。像这样:
Public Class PropertyFilter(Of T)
Public Property ObjectType
Public Property MainObjectProperty As T
End Class
这样,当您创建PropertyFilter
时,您可以指定MainObjectProperty
是什么,如下所示:
Dim propWithDecimal As New PropertyFilter(Of Decimal)()
Dim propWithString As New PropertyFilter(Of String)()
这不是动态,因为该类型在编译时仍然是已知的。您可以在MSDN了解有关泛型的更多信息。
修改强>:
根据提问者的编辑:
这对我来说听起来有点古怪。你无法在运行时真正改变字段的类型 - 但是有很多方法可以使看起来像这样的行为存在。
您可以使用dynamic
并实现自己的DynamicOjbect
来实现您的目标,但这也是一些工作。
如果你知道我的意思,那么类应该根据ObjectType来决定它的属性类型。
如果是这种情况,您可能需要将其存储为object
,并根据对象的类型做出决定。