如果我在C#/ .NET类库中定义一个类,那么通过使它可见,我可以实例化该类并使用COM从VBA调用它的方法。
有没有办法从VBA调用此类的静态方法?
答案 0 :(得分:10)
COM不支持静态方法,COM对象的实例不调用静态方法。相反,在静态方法上设置ComVisible(false)
,然后创建一个实例方法来包装它:
[ComVisible(true)]
public class Foo
{
[ComVisible(false)]
public static void Bar() {}
public void BarInst()
{
Bar();
}
}
或者只是使方法实例而不是静态并忘记静态。
您没有 将静态方法标记为COM不可见,但它满足一些代码分析工具会警告您有关COM可见类型的静态方法,并使其成为可能明确静态方法不是COM可见的。
答案 1 :(得分:1)