私は奇妙な状況にいます。私は互いに派生する恐ろしい数のクラスを持っており、さまざまなコレクションにオブジェクトを保存しています。
たとえば、次のようになります。
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 を取得することが期待されます。
この場合、System.Type を引数として受け入れないため、TypeOf を使用できません。また、必要なものを伝える別の方法が思いつきません。
基本クラスに興味があるので、ここでも「GetType」が役立つとは思いません。
誰にもアイデアはありますか?おそらくある種のクレイジーな反射魔法でしょうか?
ありがとう