ちょっとしたリフレクションを実行するルーチンを書いています。進行するにつれて、遭遇したMethodInfo
インスタンスに対していくつかの検証を実行します - それらのパラメーターと戻り値の型を、事前に決定されたコントラクトに対して検証します。この検証は安価ではないため、以前に検証されたメソッドのコレクションを記録して、ルーチンが複数回遭遇した場合に再度検証する必要がないようにしたいと考えています。
するべきか...
- を使用して
HashSet<MethodInfo>
、検証済みのMethodInfo
インスタンスをそれに追加します。 - を使用し、検証済みのメソッドをそれに
HashSet<int>
追加しますMethodHandle
- を使用し、検証済みのメソッドをそれに
HashSet<int>
追加しますMetadataToken
MethodInfo
インスタンスを取得していないため、オプション 1 を選択するのは気が進まない。それらがどこから来たのかを制御することはできず、同じ型の同じメソッドを表す複数のインスタンスを取得できないのではないかと考えています。
オプション 2 と 3 は、全体が 1 つのアプリ ドメイン内で実行されるため、実行可能と思われます。MethodHandle
andに関するドキュメントはほとんどありMetadataToken
ません。アプリ ドメイン内でいつ変更されるかはわかりません。