如何在 VBA 中仅使用后期绑定来向下转换对象



我正在编写一个 VBA 应用程序,对于特定函数,我只使用后期绑定,因为该应用程序的大多数用户不会安装引用(也不会使用此特定函数(。

我使用的对象的行为如下:

class PISDK{
    PIServer GetServer(string hostName)
}

GetServer 方法返回一个 PIServer 对象,但存在一个更具体的接口,实现PIServer

interface IGetPoints2 : PIServer{}

我想将PIServer对象向下转换为IGetPoints2对象。

不做任何事情,我得到了一个 PIServer 对象:

Dim PiSdk As Object
Dim PiServer As Object
Set PiSdk = CreateObject("PISDK.PISDK")
Set PiServer = PiSdk.GetServer("foo")

查看调试器中的PiServer可以确认这一点。

使用

强类型变量应该可以工作,但我不想引用此处使用的任何类型。

如何仅使用后期绑定来向下转换此对象?

请阅读以下内容:

  • 由于您没有添加对 PI SDK 类型库的引用,因此我相信你不能使用"rt插值"作为第二个参数ArcValue 方法;相反,您可以使用相应的数字(对于检索类型常量中的"rt插值"为 3枚举(。
  • 带有后期绑定的 VBA 使用可选很棘手参数,因为我们在调用方法时不能省略它们。 相反您需要使用任何 Nothing(如果可选参数是一个对象(或 "(如果可选参数是字符串(作为"参数占位符"(顺便说一下,同样
    的情况发生在VBScript,一种脚本语言,用于包含以下
    文件的脚本独立于任何应用程序运行的 .vbs 扩展名(。
  • 能够将一些功能示例代码放在一起,这是更多的完成,希望对您有所帮助。

相关内容

  • 没有找到相关文章

最新更新