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

Gar*_*ill 6 .net c# com vba interop

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

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

vcs*_*nes 10

COM不支持静态方法,COM对象的实例不调用静态方法.相反,设置ComVisible(false)静态方法,然后创建一个实例方法来包装它:

[ComVisible(true)]
public class Foo
{
    [ComVisible(false)]
    public static void Bar() {}

    public void BarInst()
    {
        Bar();
    }
}
Run Code Online (Sandbox Code Playgroud)

或者只是使方法实例而不是静态并忘记静态.

你不需要标记的静态方法不COM可见,但它满足了一些代码分析工具,会提醒你有关COM可见的类型的静态方法,并且清楚地表明,静态方法并不打算是可见COM.