简体   繁体   English

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

[英]How to marshal a C++ enum in C#

I need to create a wrapper between C++ and C#. 我需要在C ++和C#之间创建一个包装器。 I have a function very similar to this: 我有一个非常类似的功能:

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

The enum is declared like this: enum声明如下:

enum class ATTRIBUTE_TYPE { 
    ATTRIB_STANDARD, 
    ATTRIB_LENGTH 
};

How do I wrap that ATTRIBUTE_TYPE enum? 如何包装ATTRIBUTE_TYPE枚举?

Your C++ enum is defined like this: 您的C ++枚举定义如下:

enum class ATTRIBUTE_TYPE { 
    ATTRIB_STANDARD, 
    ATTRIB_LENGTH 
};

By default, enum class types are int sized. 默认情况下, enum class类型是int大小。 Which means that you can translate this to C# like so: 这意味着您可以将其转换为C#,如下所示:

enum ATTRIBUTE_TYPE { 
    ATTRIB_STANDARD, 
    ATTRIB_LENGTH 
};

That's all there is to it. 这里的所有都是它的。 AC# enum is blittable and this C# enum maps exactly on to your C++ enum. AC#enum是blittable,这个C#enum完全映射到你的C ++枚举。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM