我正在编写一个 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 扩展名(。 - 能够将一些功能示例代码放在一起,这是更多的完成,希望对您有所帮助。