我的情况很奇怪。我有大量相互派生的类,并且我将对象存储在各种集合中。
例如:
Record <-- CostRecord <-- AccruedCostRecord
<-- PrepaidCostRecord
<-- StockRecord
对象存储在 List(Of Record) 中,我想在特定列表中搜索给定类型的记录。
Private Function findRecord(listToSearch As List(of Record), recordName As String, recordType As Type) As Record
For i As Integer = 0 To listToSearch.Count - 1
If listToSearch(i).name.equals(recordName)
'If record is of type "recordType" then return it
End If
Next
End Function
通常我会使用“TypeOf ... Is”运算符,因为我也对基类类型感兴趣。因此,如果我传入“CostRecord”,我希望检索 AccruedCostRecord、PrepaidCostRecord 或 StockRecord。
在这种情况下,我不能使用 TypeOf 因为它不接受 System.Type 作为参数,而且我想不出另一种方式来告诉它我想要什么。
我也不相信“GetType”会在这里帮助我,因为我对基类感兴趣。
有人有什么想法吗?也许某种疯狂的反射魔法?
谢谢