我有一个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组件无法创建对象”。
答案 0 :(得分:2)
注册COM库会将Application.TestA + TestB创建为CLSID。要使用CreateObject(“Application.TestA.TestB”)进行实例化,请在c#代码中添加属性ProgID。
[ProgId("Application.TestA.TestB")