官方文档说它们是可选的。我知道 COM 互操作需要每个接口(interface)有一个唯一的标识符,但我看到的每个接口(interface)示例都有一个 GUID,无论它是否与 COM 一起使用?如果不与 COM 一起使用,包含 GUID 有什么好处吗?
最佳答案
我注意到一些方法,例如 Supports
(确定一个类是否符合特定接口(interface))要求您先定义一个 GUID,然后才能使用它们。
This page通过以下信息确认:
Note: The SysUtils unit provides an overloaded function called Supports that returns true or false when class types and instances support a particular interface represented by a GUID. The Supports function is used in the manner of the Delphi is and as operators. The significant difference is that the Supports function can take as the right operand either a GUID or an interface type associated with a GUID, whereas is and as take the name of a type. For more information about is and as, see Class References.
这里有一些 interesting information about interfaces ,其中指出:
Why does an interface need to be uniquely identifiable? The answer is simple: because Delphi classes can implement multiple interfaces. When an application is running, there has to be a mechanism that will get pointer to an appropriate interface from an implementation. The only way to find out if an object implements an interface and to get a pointer to implementation of that interface is through GUIDs.
在两个引号中添加强调。
阅读整篇文章也会让您意识到QueryInterface
(需要 GUID)出于引用计数等原因在幕后使用。
关于delphi - 在 Delphi 中使用接口(interface)是否需要 GUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2992183/