为什么首先需要GUID属性?

Nis*_*sim 15 .net com attributes guid

GUID属性的必要性是什么?为什么不让编译器自动处理这个?!

Bev*_*van 9

如果编译器自动处理这个,你最终会遇到两种情况之一.

  • 每次编译时都有一个新的GUID - 因为GUID应该被发布,所以这会失败.

  • 冲突 - 如果GUID每次都相同,基于(比方说)名称的哈希,多个项目最终将使用相同的GUID用于不同目的.

现有方法 - 显式GUID使开发人员能够根据需要控制这些方法.

  • 您只需要在有限的情况下添加GUID属性 - 主要用于COM互操作,如果您使用.NET编写COM对象以供其他系统使用.根据您的项目类型,这可能是一个日常事件 - 或每年一次. (2认同)

Han*_*ant 9

这些属性对COM很重要.这是.NET的前身,并且在九十年代偷走了这个节目之前,它已经在九十年代鼎盛时期..NET需要与COM兼容才有可能取得成功.或者换句话说,您需要能够以.NET语言编写COM服务器,而大型遗留程序可以使用该服务器.

[ComVisible]属性确保COM客户端程序可以查看和使用IEnumerable接口.允许客户端程序枚举.NET集合的必要条件.

[Guid]属性在COM中至关重要,它标识了一个接口.这是由guid而不是名称完成的,以确保它在不同程序员编写的多个应用程序中是唯一的..NET也有这个,但是使用一个名字可以让人们更容易."System.Collections.IEnumerable,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089".

IEnumerable <>,通用版本,没有[Guid].泛型与COM不兼容.这些日子并不重要,不再有太多可见的COM,大部分已被友好的.NET类包装.但在Windows中仍然非常核心,特别是在全新的WinRT(又名Metro,又名Modern UI,又名UWP)中.你也不直接使用它,使COM有点像Windows编程的汇编语言.