在对接受VBA引用类型的C#属性进行长时间调查后,我得出结论认为这是不可能的。简而言之,类型为double []甚至是对象的C#属性不能像这样在VBA中使用:
' Compile Error: Function or interface marked as restricted,
' or the function uses an Automation type not supported in Visual Basic
oComExposedEarlyBinding.ObjectArray = VBArray
' Run-time error 424: Object required
oComExposedEarlyBinding.PlainObject = VBArray
或了解更多详情: C# property exposed to VBA (COM) : Run-time error '424': Object required
我想知道C ++ / CLI是否支持这样的选项?即 允许将引用类型属性公开给VBA以便a 像上面这样的语法是有效的。
N.B。你可以通过使用后期绑定来实现这一点,但是失去智能感知不是一种选择。
答案 0 :(得分:0)
这在C ++ / CLI中是可能的,因为C ++ / CLI中的属性由get和set两个函数组成,在C ++ / CLI中,您可以使用引用函数(而不是指针1)。
在C#中以类似方式公开的相同属性将不起作用。
此属性按预期向COM公开,并且不会出现问题设置或进入VBA:
private:
Object ^_myProp;
public:
property Object %MyProp {
virtual Object %get()
{
return *_myProp;
}
virtual void set(Object %value)
{
_myProp = %value;
}
};