1

ちょっとしたリフレクションを実行するルーチンを書いています。進行するにつれて、遭遇したMethodInfoインスタンスに対していくつかの検証を実行します - それらのパラメーターと戻り値の型を、事前に決定されたコントラクトに対して検証します。この検証は安価ではないため、以前に検証されたメソッドのコレクションを記録して、ルーチンが複数回遭遇した場合に再度検証する必要がないようにしたいと考えています。

するべきか...

  1. を使用してHashSet<MethodInfo>、検証済みのMethodInfoインスタンスをそれに追加します。
  2. を使用し、検証済みのメソッドをそれにHashSet<int>追加しますMethodHandle
  3. を使用し、検証済みのメソッドをそれにHashSet<int>追加しますMetadataToken

MethodInfoインスタンスを取得していないため、オプション 1 を選択するのは気が進まない。それらがどこから来たのかを制御することはできず、同じ型の同じメソッドを表す複数のインスタンスを取得できないのではないかと考えています。

オプション 2 と 3 は、全体が 1 つのアプリ ドメイン内で実行されるため、実行可能と思われます。MethodHandleandに関するドキュメントはほとんどありMetadataTokenません。アプリ ドメイン内でいつ変更されるかはわかりません。

4

0 に答える 0