And*_*rov 5 c# enums enumeration c++-cli
我有一个用C++\CLI编写的程序集,它使用.Net提供的一些枚举.它有这样的属性:
property System::ServiceProcess::ServiceControllerStatus ^ Status
{
ServiceControllerStatus ^ get()
{
return (ServiceControllerStatus)_status->dwCurrentState;
}
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,但当我从我的C#代码使用此程序集时,此属性的类型是
System.Enum
Run Code Online (Sandbox Code Playgroud)
我必须进行类型转换
if ((ServiceControllerStatus)currentService.Status == ServiceControllerStatus.Running)
//do smth
Run Code Online (Sandbox Code Playgroud)
问题很简单:为什么会这样,以及如何解决它?
在C++/CLI中,^就像标准C++中的analagous*.因为枚举是值类型,所以不应包含^,否则您将看到它们为System.Enum.
删除^,您将在C#端看到正确的枚举.
property System::ServiceProcess::ServiceControllerStatus Status
{
System::ServiceProcess::ServiceControllerStatus get()
{
return (System::ServiceProcess::ServiceControllerStatus)_status->dwCurrentState;
}
}
Run Code Online (Sandbox Code Playgroud)