如果我理解正确你的问题是什么:
某物是一个 COM 对象,它基于它的构建方式以将其功能公开给使用它的其他代码。它必须按照某些规则构建,并且必须提供某些强制性的功能,并且必须在二进制级别(位和字节)以非常特定的方式这样做。不幸的是,具体规则冗长且过于复杂,无法在此答案中解释。
使用对象的代码也必须遵守规则和特定的二进制要求。
语言独立性来自这样一个事实,即规则是如此精确,并且它们的设计与任何特定语言无关。很多语言都可以用来编写 COM 对象,也有很多语言可以使用 COM 对象。我的意思是那些语言需要为程序员提供一种机制来遵守这些规则。这是关键:规则没有具体说明语言应该如何使遵守规则成为可能。每种语言都有不同的方式;有些语言会自动为您处理很多细节,而另一些语言则需要您手动完成大部分工作。有些只为 COM 使用特殊语法,而另一些则使用与其他所有内容相同的语法。
请注意,“语言独立性”(我更恰当地称之为“语言中立性”)与“语言普遍性”不同。并非每种语言都可以使用 COM。
考虑到这一点,您的答案是:
1)您如何通过读取示例中的代码行来知道某物是否是 COM 对象?
真正的答案是:“这取决于对象是如何编写的。如果它是为了遵守 COM 规则而编写的,并且它是通过您的语言中的 COM 机制调用的,那么它就是一个 COM 对象”。在查看代码并试图在不查看对象细节的情况下确定它是否为 COM 的特定情况下,答案是:“这取决于语言。”
在您的 VBScript 示例代码中,两者都是 COM 对象。表达式使用命令的事实Set
立即告诉您变量将引用 COM 对象。请记住,答案在其他语言中会有所不同(例如,即使在 VB6 中,存在set
也不足以知道对象是否为 COM 对象)。
2) 语言独立性是如何实现的?
它是通过在二进制级别使用严格的规则来实现的。不同的语言以不同的方式遵守规则,这没关系。某些语言无法遵守这些规则,因此它们不支持 COM。
您展示的那些特定对象具有自己的功能,是的,它们通过功能和属性工作;这些是一些规则。如果一种语言没有允许您调用这些函数的机制,那么该语言就不能用于使用 COM 对象。
如果你想学习这些规则,它们通常用 C 或 C++ 表示,关于这个主题的最好的书之一是 Don Box 的《Essential COM》。