VB.NET 专为变体数组设计的 Option Explicit 和 Office VSTO 方法

VB.NET Option Explicit and Office VSTO Methods designed for Variant Arrays

正在开发两个新的 Office VSTO 加载项,一个用于 Microsoft Excel 和 Visio,我 运行 参与了这个特定问题。

我非常喜欢在 VB.NET 中使用 Option Strict On 进行开发,原因很简单,这是一种很好的做法,并且可以在以后为我节省大量的调试工作。

但是,很多 Office 对象方法都像这个用于 Visio 的方法: https://docs.microsoft.com/en-us/office/vba/api/visio.page.getresults

设计用于来回传递 (VBA) 变体数组 ByRef(呃!)。

(因为 .net COM 互操作非常慢,这些批量方法对于良好的用户体验是必要的)

我知道如何在 VB.NET 中创建这些数组以跨互操作工作,例如:

Dim resultArray as Array
resultArray = Array.CreateInstance(GetType(Object), 1000)

这样的代码可以工作,但是这种后期绑定当然违反了 Option Strict On 规则并为大量潜在错误打开了大门。

有没有一种方法可以让我以与 Option Explicit On 一起使用的方式使用这些 Office 对象方法?

感谢您分享您的知识和见解!

如果您需要使用后期绑定,那么您需要使用它,这需要Option Strict Off。好消息是,您可以在项目级别将其设置为 On,然后在文件级别将其设置为 Off,仅适用于那些需要使用后期绑定的代码文件。进一步的好消息是 VB 支持部分 classes,因此您可以跨多个代码文件打破单个 class。这使您能够仅将需要后期绑定的代码放入文件级别 Option Strict Off 的部分 class 中,而使用 Option Strict On 的项目设置将其他所有代码放入另一个代码文件中。您可以将一些方法分解成更小的部分,并将使用 Option Strict Off 编写的代码量减少到绝对最小值。