VBScript 与 C# 交互104


VBScript 和 C# 是两种不同的编程语言,有时我们需要在两者之间进行交互。本文将介绍如何使用 VBScript 调用 C# 代码。## 使用 `CreateObject` 对象

要从 VBScript 调用 C# 代码,可以使用 `CreateObject` 对象。该对象允许脚本创建和操作 COM 对象,包括 .NET 类。
Dim objCSharp = CreateObject("myCSharpClass")
Dim result = (1, 2)
```

在这个例子中,我们创建了一个 `myCSharpClass` COM 对象,并调用了它的 `Add` 方法来计算 1 和 2 的和。## 定义 COM 互操作接口

为了让 C# 类可以从 VBScript 调用,需要定义一个 COM 互操作接口。该接口定义了 VBScript 可以访问的类、方法和属性。

在 C# 中,使用 `ComVisible` 和 `Guid` 属性来定义 COM 互操作接口。还可以使用 `DispId` 属性显式指定方法和属性的派发 ID。```csharp
[ComVisible(true)]
[Guid("00000000-0000-0000-0000-000000000000")]
public class MyCSharpClass
{
[DispId(1)]
public int Add(int a, int b)
{
return a + b;
}
}
```
## 注册 COM 对象

在使用 `CreateObject` 对象之前,必须注册 COM 对象。可以通过以下两种方式之一注册 COM 对象:1. 使用 `regasm` 工具:在命令提示符中运行 `regasm /tlb `。
2. 使用 `gacutil` 工具:在命令提示符中运行 `gacutil -i `。
## 访问 C# 对象

注册 COM 对象后,就可以使用 `CreateObject` 对象访问 C# 对象。以下是访问 C# 对象的语法:```
Dim objCSharp = CreateObject("")
Dim result = (1, 2)
```

在这个例子中,我们直接指定了 C# 类和 COM 互操作接口的名称。## 示例

下面是一个完整的示例,演示如何从 VBScript 调用 C# 代码:```vbscript
Dim objCSharp = CreateObject("")
Dim result = (1, 2)
result
```
```csharp
[ComVisible(true)]
[Guid("00000000-0000-0000-0000-000000000000")]
public class MyCSharpClass
{
[DispId(1)]
public int Add(int a, int b)
{
return a + b;
}
}
```

在 C# 中编译 `MyCSharpClass` 类并注册 COM 对象后,就可以在 VBScript 脚本中使用它了。## 总结

本文介绍了如何使用 VBScript 调用 C# 代码。通过使用 `CreateObject` 对象和定义 COM 互操作接口,可以实现 VBScript 和 C# 之间的交互。这在需要将 VBScript 脚本与 .NET 代码集成的情况下非常有用。

2024-12-24


上一篇:VBScript 经典教程

下一篇:VBScript 语言教程:入门指南