我正在编写一个执行一些反思的例程。随着它的进行,它会对遇到MethodInfo
的实例执行一些验证——根据一些预先确定的合同验证它们的参数和返回类型。这种验证并不便宜,所以我想记录一组以前验证过的方法,这样如果例程多次遇到它们,就不必再次验证它们。
我是不是该...
- 使用 a
HashSet<MethodInfo>
并向其添加经过验证的MethodInfo
实例。 - 使用 a
HashSet<int>
并向其添加MethodHandle
经过验证的方法 - 使用 a
HashSet<int>
并向其添加MetadataToken
经过验证的方法
我不愿意选择选项 1,因为我没有获取MethodInfo
实例。我无法控制它们的来源,并且想知道我是否可能无法获得表示相同类型的相同方法的多个实例。
选项 2 和 3 似乎可行,因为整个事情在一个应用程序域中运行。几乎没有关于MethodHandle
和的文档MetadataToken
- 我不知道它们何时更改,在应用程序域中。