如何从COM调用者调用.Net嵌套类的方法

时间:2013-11-19 08:32:57

标签: c# vbscript com

我有一个COM可见的嵌套类,如下所示。

[ComVisible(true)]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
[Guid("12341234-3EDA-4A6D-9E84-804DCC625BE2")]
public interface ITestA
{
}

[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[ComDefaultInterface(typeof(ITestA))]
[Guid("922F3F5A-0B65-4B58-AB91-76822A4FAA00")]
public class TestA : ITestA
{
    [ComVisible(true)]
    [InterfaceType(ComInterfaceType.InterfaceIsDual)]
    [Guid("43211234-3EDA-4A6D-9E84-123DFC625BE2")]
    public interface ITestB
    {
        string SayHello();
    }

    [ComVisible(true)]
    [ClassInterface(ClassInterfaceType.None)]
    [ComDefaultInterface(typeof(ITestB))]
    [Guid("922F3F5A-0B65-4B58-AB91-76822A4FAA00")]
    public class TestB : ITestB
    {
        public string SayHello()
        {
            return "Hello";
        }
    }
}

我使用VBScript实例化TestB类,如下所示。

Set objTestB = CreateObject("Application.TestA.TestB")
Wscript.Echo objTestB.SayHello()

这是在实例化COM对象时出现错误“ActiveX组件无法创建对象”。

1 个答案:

答案 0 :(得分:2)

注册COM库会将Application.TestA + TestB创建为CLSID。要使用CreateObject(“Application.TestA.TestB”)进行实例化,请在c#代码中添加属性ProgID。

[ProgId("Application.TestA.TestB")