Tom*_*ski 9 .net c# reflection types
可能重复:
.NET中类型的自动生成GUID是否一致?
我想Type用作关键字典,但我宁愿使用完整的类型名称或Type.GUID.Type.GUID这项任务的可靠性和正确性如何?
你能依靠System.Type.GUID稳定吗?
稳定我的意思是它将在编译中为相同类型生成相同的值.经验证据表明情况就是这样,以下因素决定了一种类型的指导:
- 输入名称(包括命名空间)
- 程序集名称
- 大会公钥
反映到系统中,事实证明System.Type.GUID最终被转换为对System.RuntimeType.GetGUID的调用,这是直接在运行时本身实现的可怕的InternallCall方法之一.
我想知道...
来自http://msdn.microsoft.com/en-us/library/system.type.guid.aspx 上的文档。
的目的Type.GUID是使用 获取与类关联的值[Guid("...")]。但是,当此属性未关联时,它也会返回一个 guid。问题是它从哪里得到这个。一个小测试表明 guid 是稳定的。我检查了一个类的 guid,并确认在我重命名该类时它发生了变化。当我将班级重新命名时,我又得到了原来的 guid。但是,由于这些 guid 是凭空出现的,因此不应相信它们会随着时间、版本、框架版本等保持稳定。
不要使用它。
typeof(byte).GUID
00000000-0000-0000-0000-000000000000
typeof(int).GUID
00000000-0000-0000-0000-000000000000
typeof(short).GUID
00000000-0000-0000-0000-000000000000
Run Code Online (Sandbox Code Playgroud)
在ideone.com 上测试,它们运行 Mono 2.8
编辑:在各种(大)程序集上使用 System.Reflection 后,我找不到两个 GUID 之间的冲突。所以似乎0-GUID 问题是 Mono 特定的。