我正在使用将从VBA使用的C#创建类库。但是有一件事让我觉得 - 当我删除或更改方法名称中的一些字母并尝试编译vba项目时,我没有得到任何错误。但我想得到编译错误消息如果我发现它发生因为使用后期绑定。
我会尝试解释。
这是正确的签名:
Sub Test()
Dim cls as New SomeClass
cls.SomeMethod
End Sub
这是拼写错误的签名:
Sub Test()
Dim cls as New SomeClass
cls.**SomeMetod**
End Sub
按编译VBA项目 - 一切正常,但不应该。
我已经更改了基本界面,如下所示:
[Guid("Some GUID here"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IComInterface
{}
和基类:
[ClassInterface(ClassInterfaceType.None)]
public class BaseClass
但没有任何反应!我只是在运行时遇到错误。
答案 0 :(得分:1)
解决方案是:
[Guid("Some GUID here"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IComInterface
{}
和基类:
[ClassInterface(ClassInterfaceType.AutoDual)]
public class BaseClass
请注意,不支持对代码进行版本控制!此外,诸如ToString(),GetHashCode()等.NET方法在VBA中变得可见。因此,您需要为这些方法使用属性[ComVisible(false)]。这适用于ToString,GetHashCode,Equals。在这种情况下,GetType无法隐藏。因此,您需要决定是否需要隐藏.NET方法或具有早期绑定和编译警告