gpt4 book ai didi

.net - 是否可以向 COM 互操作调用者公开 C# 枚举,如果可以,如何?

转载 作者:行者123 更新时间:2023-12-03 23:42:31 26 4
gpt4 key购买 nike

我有一个通过 COM 互操作调用的托管程序集。像 VBScript 客户端、Perl 客户端等等。

类(class)装饰着

[ClassInterface(ClassInterfaceType.AutoDual)]
[GuidAttribute("ebc25cf6-9120-4283-b972-0e5520d0000E")]
[ComVisible(true)]

然后我当然会做 regasm 的事情,所有的方法都工作得很好。

但是程序集中也有枚举类型。我想对枚举值使用符号名称 COM 应用程序。

如何通过 COM 互操作公开枚举?我只需要添加这些属性吗?
[GuidAttribute("ebc25cf6-9120-4283-b972-0e5520d0000E")]
[ComVisible(true)]

然后,如何在 VBScript 中引用这些符号名称?我在 OleView 中看不到枚举类型。 (我应该吗?)我在 OleView 中看到了所有其他类型。

最佳答案

我使 COM 可见的(到目前为止).NET 程序集也有一个枚举类型,它在 OleView 中显示得很好。我让整个库对 COM 可见,所以

[ComVisible(true)]

没有必要。你的枚举类型是公开的吗?

发生的一件事是不同的枚举以“枚举类型名称”_为“前缀”:
public enum DataType
{
INT32,
FLOAT64,
INT8
}

转换成:
typedef [...]
enum {
DataType_INT32 = 0,
DataType_FLOAT64 = 1,
DataType_INT8 = 2
} DataType;

在类型库中。

关于.net - 是否可以向 COM 互操作调用者公开 C# 枚举,如果可以,如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1276442/

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