0
私はリフレクトを使用してSQLからオブジェクトへのマッピングを実現する抽象基本クラスを実装して遊んできました。抽象クラスのキャッシングプロパティ情報
私はいくつかのベンチマークを行い、オブジェクトのプロパティ情報のキャッシング戦略を実装したいと決めました(将来のルックアップを防ぐため)。私の最初の本能は、このようなものを試して実装することでした。
Public MustInherit Class BaseModel
Implements IFillable
Private Shared PropertyCache As List(Of PropertyInfo)
Sub New()
PropertyCache = New List(Of PropertyInfo)
For Each itm As PropertyInfo In Me.GetType().GetProperties
PropertyCache.Add(itm)
Next
End Sub
End Class
しかし、私は、これが後続のオブジェクトのインスタンス化でオーバーライドされるため、明らかに機能しないことに気付きました。
ここで私は立ち往生しましたが、反射メタデータをキャッシュする抽象クラスをどのように実装できますか?
EDIT:
これは、私が思い付くことができる最高の(私の問題の回避策)で、イム望んで誰かがより良いものを提案することができますか?
Public MustInherit Class BaseModel
Implements IFillable
Private Shared ReadOnly PropertyCache As New Dictionary(Of String, PropertyInfo)
Sub New()
Dim typeName As String = Me.GetType.ToString
For Each itm As PropertyInfo In Me.GetType().GetProperties
Dim lookupKey As String = String.Format("{0}_{1}", typeName, itm.Name)
If Not PropertyCache.ContainsKey(lookupKey) Then
PropertyCache.Add(lookupKey, itm)
End If
Next
End Sub
End Class