如何在C#中编组C ++枚举

时间:2014-03-04 15:30:30

标签: c# c++ pinvoke marshalling

我需要在C ++和C#之间创建一个包装器。我的功能与此非常相似:

virtual SOMEINTERFACE* MethodName(ATTRIBUTE_TYPE attribType = ATTRIBUTE_TYPE::ATTRIB_STANDARD) = 0;

enum声明如下:

enum class ATTRIBUTE_TYPE { 
    ATTRIB_STANDARD, 
    ATTRIB_LENGTH 
};

如何包装ATTRIBUTE_TYPE枚举?

1 个答案:

答案 0 :(得分:9)

您的C ++枚举定义如下:

enum class ATTRIBUTE_TYPE { 
    ATTRIB_STANDARD, 
    ATTRIB_LENGTH 
};

默认情况下,enum class类型的大小为int。这意味着您可以将其转换为C#,如下所示:

enum ATTRIBUTE_TYPE { 
    ATTRIB_STANDARD, 
    ATTRIB_LENGTH 
};

这就是它的全部。 C#enum是blittable,这个C#enum完全映射到你的C ++枚举。