gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 10:54:19 24 4
gpt4 key购买 nike

我有一个 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 组件无法创建对象”。

最佳答案

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

[ProgId("Application.TestA.TestB") 

关于c# - 如何从 COM 调用者调用 .Net 嵌套类的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20066651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com