繁体   English   中英

在C ++ \\ CLI中转换枚举的问题

[英]An Issue with converting enumerations in C++\CLI

我有一个用C ++ \\ CLI编写的程序集,它使用.Net提供的一些枚举。 它有这样的属性:

property System::ServiceProcess::ServiceControllerStatus ^ Status  
{  
    ServiceControllerStatus ^ get()  
    {  
        return (ServiceControllerStatus)_status->dwCurrentState;   
    }  
}    

它工作正常,但当我从我的C#代码使用此程序集时,此属性的类型是

System.Enum

我必须进行类型转换

 if ((ServiceControllerStatus)currentService.Status == ServiceControllerStatus.Running)
     //do smth

问题很简单:为什么会这样,以及如何解决它?

在C ++ / CLI中, ^就像标准C ++中的analagous *。 因为枚举是值类型,所以不应包含^,否则您将看到它们为System.Enum

删除^,您将在C#端看到正确的枚举。

property System::ServiceProcess::ServiceControllerStatus Status  
{  
    System::ServiceProcess::ServiceControllerStatus get()  
    {  
        return (System::ServiceProcess::ServiceControllerStatus)_status->dwCurrentState;   
    }  
}

我认为枚举不使用^ - 尝试从属性声明和get()中删除它。

暂无
暂无

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

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