我可以通过COM从VBA调用C#类的静态方法吗?

时间:2014-06-12 20:14:05

标签: c# .net vba com interop

如果我在C#/ .NET类库中定义一个类,那么通过使它可见,我可以实例化该类并使用COM从VBA调用它的方法。

有没有办法从VBA调用此类的静态方法?

2 个答案:

答案 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)