1

我使用 .NET 分析 API (ICorProfilerCallback) 并很快发现 FunctionID 不稳定(它可能会被重用,请参阅http://msdn.microsoft.com/en-us/library/bb384619.aspx)。没关系。我想出了用模块版本 ID (MVID) 和方法令牌 (mdTokenDef) 对方法进行编码的想法。

但是,我担心这是空间无效(GUID 为 16 个字节 + 令牌为 4 个字节)。现在我考虑使用某种散列(我认为 32 位散列应该足够了)。

你怎么看,有更好的方法来编码方法吗?

4

1 回答 1

1

很难弄错,FunctionIDs 是稳定的,直到 appdomain 被拆除。FunctionUnloadStarted 回调是从符号表中清除 id 的最直接方法。

请注意泛型。当 Foo 和 Bar 是引用类型时,例如List<Foo>和的方法共享相同的函数 id。List<Bar>这就是工作中的代码重用,这是 .NET 泛型的一个特性。

于 2012-05-01T18:35:08.240 回答