2012-05-01 13 views
1

私は.NETプロファイリングAPI(ICorProfilerCallback)で遊んで、すぐにFunctionIDが安定していないことを発見しました(再利用できるかもしれません、http://msdn.microsoft.com/en-us/library/bb384619.aspx参照)。それは大丈夫です。私は、モジュールバージョンID(MVID)とメソッドトークン(mdTokenDef)を持つメソッドをエンコードするアイデアを考え出しました。.NETプロファイラ(ICorProfilerCallback)でユニークなメソッドIDを取得する方法

しかし、私はスペースが有効でない(GUIDの場合は16バイト+トークンの場合は4バイト)ことを心配しています。今私はいくつかの種類のハッシュを使用すると考えています(32ビットハッシュは十分だと思います)。

メソッドをエンコードする方が良い方法はありますか?

答えて

1

これは間違っていますが、機能IDはappdomainが解体されるまで安定しています。 FunctionUnloadStartedコールバックは、シンボルテーブルからIDをパージする最も直接的な方法です。

ジェネリック医薬品に注意してください。たとえばList<Foo>List<Bar>のメソッドは、FooとBarが参照型である場合、同じ関数IDを共有します。これは、.NETジェネリックの機能である職場でのコードの再利用です。

+0

迅速な回答ありがとうございます。私はジェネリックスについて考えなかった。適切な場所でmdMethodSpecを使用して簡単に修正すると思います。ありがとう。 –

関連する問題