我在List(of BodyComponent)
中有对象BodyComponent
是基类,添加到列表中的项是来自派生类的对象。
Public Class Body_Cylinder
' Get the base properties
Inherits BodyComponent
' Set new properties that are only required for cylinders
Public Property Segments() As Integer
Public Property LW_Orientation() As Double End Class
现在我想将对象转换回它的原始类Body_Cylinder
因此用户可以为对象输入一些特定于类的值。
但是我不知道如何进行这项操作,我找了一些相关的帖子,但这些都是用c#
写的,其中我没有任何知识。
我认为答案可能在这里,但是......不能读它Link
答案 0 :(得分:0)
您可以使用Enumerable.OfType
- LINQ方法:
Dim cylinders = bodyComponentList.OfType(Of Body_Cylinder)()
For Each cylinder In cylinders
' set the properties here '
Next
该列表可以包含从BodyComponent
继承的其他类型。
所以OfType
做了三件事:
Body_Cylinder
还是如果您已经知道对象,为什么不简单地投射它?使用CType
或DirectCast
。
Dim cylinder As Body_Cylinder = DirectCast(bodyComponentList(0), Body_Cylinder)
如果您需要预先检查类型,可以使用TypeOf
-
If TypeOf bodyComponentList(0) Is Body_Cylinder Then
Dim cylinder As Body_Cylinder = DirectCast(bodyComponentList(0), Body_Cylinder)
End If
Dim cylinder As Body_Cylinder = TryCast(bodyComponentList(0), Body_Cylinder)
If cylinder IsNot Nothing Then
' safe to use properties of Body_Cylinder '
End If