C#:MemberInfo.MetadataToken在编译器运行时是否稳定?

Mir*_*emm 1 c# reflection

在我们的应用程序中,我们需要一种在C#中唯一标识反射元数据对象的方法.Reflection API具有MemberInfo.MetadataToken属性,该属性已记录以完成此任务.但是,未记录的是,在下一次构建同一模块之后,此标记是否相同,因为模块名称,命名空间,声明类型名称和成员名称未更改.

有谁知道这个的实施细节?

谢谢!米尔科

the*_*oop 5

不,他们不会.元数据标记值取决于程序集中的其他所有内容,以及编译器在输出程序集中生成类型的确切顺序.如果输入代码或项目以任何方式发生变化,那么所有令牌都可能发生变化.

你为什么需要这样做?

  • 它将用于通用应用程序框架,该框架将扩展类型和成员元数据与通过Reflection访问的现有元数据对象相关联.如果存在元数据构造的那种唯一ID,那将是很好的,但现在它不是,我将通过完全限定名称引用这些构造. (3认同)