将对象转换回原始类型

Cast object back to original type

我在 List(of BodyComponent) 中有对象 BodyComponent 是一个基础 class,添加到列表中的项目是来自派生 class 的对象。

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

现在我想将对象转换回原来的状态 class Body_Cylinder 这样用户就可以为对象输入一些 class 特定值。

但是我不知道怎么操作,我找了一些相关的帖子,但是都是c#里面写的,我也不知道

我想答案可能就在这里,但是..看不懂Link

您可以使用 Enumerable.OfType- LINQ 方法:

Dim cylinders = bodyComponentList.OfType(Of Body_Cylinder)()
For Each cylinder In cylinders
    '  set the properties here '
Next

该列表可以包含继承自 BodyComponent 的其他类型。

所以 OfType 做了三件事:

  1. 检查对象是否属于Body_Cylinder
  2. 类型
  3. 过滤器 全部不是那种类型并且
  4. 向它投射它。所以你可以放心地在循环中使用属性。

如果您已经知道该对象,为什么不简单地施放它呢?使用 CTypeDirectCast.

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

TryCast operator:

Dim cylinder As Body_Cylinder = TryCast(bodyComponentList(0), Body_Cylinder)
If cylinder IsNot Nothing Then
    ' safe to use properties of Body_Cylinder '
End If