Type.GUID是否在编译中唯一标识每种类型?

Tom*_*ski 9 .net c# reflection types

可能重复:
.NET中类型的自动生成GUID是否一致?

我想Type用作关键字典,但我宁愿使用完整的类型名称或Type.GUID.Type.GUID这项任务的可靠性和正确性如何?

Ayende Rahien写道:

你能依靠System.Type.GUID稳定吗?

稳定我的意思是它将在编译中为相同类型生成相同的值.经验证据表明情况就是这样,以下因素决定了一种类型的指导:

  • 输入名称(包括命名空间)
  • 程序集名称
  • 大会公钥

反映到系统中,事实证明System.Type.GUID最终被转换为对System.RuntimeType.GetGUID的调用,这是直接在运行时本身实现的可怕的InternallCall方法之一.

我想知道...

Pie*_*kel 9

来自http://msdn.microsoft.com/en-us/library/system.type.guid.aspx 上的文档。

的目的Type.GUID是使用 获取与类关联的值[Guid("...")]。但是,当此属性未关联时,它也会返回一个 guid。问题是它从哪里得到这个。一个小测试表明 guid 是稳定的。我检查了一个类的 guid,并确认在我重命名该类时它发生了变化。当我将班级重新命名时,我又得到了原来的 guid。但是,由于这些 guid 是凭空出现的,因此不应相信它们会随着时间、版本、框架版本等保持稳定。


use*_*016 6

不要使用它。

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 特定的。

  • 我想知道为什么 2 个赞成票……他们甚至没有经过简单的测试就投票? (3认同)