C# C++/CLI com互操作:向VBA公开引用类型属性

C# C++/CLI com互操作:向VBA公开引用类型属性,c#,vba,c++-cli,com-interop,C#,Vba,C++ Cli,Com Interop,在对暴露接受VBA引用类型的C#属性进行了长时间的调查后,我得出结论认为这是不可能的。简言之,类型为double[]的C#属性或对象不能在VBA中使用,如下所示: 编译错误:标记为受限的函数或接口, '或函数使用Visual Basic中不支持的自动化类型 oComExposedEarlyBinding.ObjectArray=VBArray '运行时错误424:需要对象 oComExposedEarlyBinding.PlainObject=VBArray 或欲了解更多详情: 我想知道C+

在对暴露接受VBA引用类型的C#属性进行了长时间的调查后,我得出结论认为这是不可能的。简言之,类型为double[]的C#属性或对象不能在VBA中使用,如下所示:

编译错误:标记为受限的函数或接口, '或函数使用Visual Basic中不支持的自动化类型 oComExposedEarlyBinding.ObjectArray=VBArray '运行时错误424:需要对象 oComExposedEarlyBinding.PlainObject=VBArray 或欲了解更多详情:

我想知道C++/CLI是否支持这样一个选项?即 允许引用类型属性向VBA公开,以便 像上面这样的语法是有效的


注意:您可以通过使用后期绑定来实现这一点,但失去intellisense不是一个选项。

这在C++/CLI中是可能的,因为C++/CLI中的属性由两个函数组成,一个get和一个set,在C++/CLI中您可以有一个引用函数(而不是指针函数)

在C#中以类似方式暴露的相同属性将不起作用

此属性按预期向COM公开,在VBA中不会有任何问题设置或获取:

private:
对象^\u myProp;
公众:
属性对象%MyProp{
虚拟对象%get()
{
返回*_myProp;
}
虚拟无效集(对象%值)
{
_myProp=%value;
}
};