0

こんにちは、私はリフレクションにかなり精通しています。たくさんの例を見てきたので、リフレクションがどのように機能し、どのような目的で使用できるかを知っています。しかし、リフレクションをキャッシュする例は得られませんでした。また、それが何を意味するのかもわかりません。そして、どういうわけか、私が行っているプロジェクトでリフレクションのキャッシュを使用する必要があります。

したがって、誰かがこの概念を簡単に説明し、いくつかの例を挙げていただければ幸いです。既存の例へのリンクもいただければ幸いです。また、属性の反映とそのキャッシングについても説明してください。前もって感謝します。

よろしくウメール

4

2 に答える 2

6

他の場合と同じようにキャッシュします。

 var cache = new Dictionary<Type, IEnumerable<Attribute>>();

 // obj is some object
 var type = obj.GetType();
 var attributes = type.GetCustomAttributes(typeof(MyAttribute), true);
 cache.Add(type, attributes);
于 2011-04-14T20:43:00.003 に答える
2

リフレクション(hehe)は(もちろん)ランタイムによって行われるため、キャッシュしないことをお勧めします。ルックアップ時間とおそらく動的な呼び出しのオーバーヘッドを削減する場合

  1. 呼び出すMethodInfo/PropertyInfoオブジェクトへの参照を保持するだけです
  2. 反映されたメソッドを式に変換します。車輪の再発明をしないために、DLINQを使用することをお勧めします。その他のポインタについては、こちらを参照してください文字列の解析C#LINQ式

そして、あなたがすることは何でも:時期尚早に最適化することによって物事を複雑にしないでください。

于 2011-04-14T20:42:58.583 に答える