Un problema con la conversión de enumeraciones en C++\CLI
-
02-07-2019 - |
Pregunta
Tengo un ensamblado, escrito en C++\CLI, que utiliza algunas de las enumeraciones proporcionadas por .Net.Tiene este tipo de propiedades:
property System::ServiceProcess::ServiceControllerStatus ^ Status
{
ServiceControllerStatus ^ get()
{
return (ServiceControllerStatus)_status->dwCurrentState;
}
}
funciona bien, pero cuando uso este ensamblado desde mi código C#, el tipo de esta propiedad es
System.Enum
y tengo que hacer tipografía
if ((ServiceControllerStatus)currentService.Status == ServiceControllerStatus.Running)
//do smth
La pregunta es simple:¿Por qué es así y cómo solucionarlo?
Solución
En C++/CLI ^ es como el análogo * en C++ estándar.Debido a que las enumeraciones son tipos de valores, ^ no deben incluirse, de lo contrario los verás como Sistema.Enumeración.
Elimine ^ y verá la enumeración correcta en el lado de C#.
property System::ServiceProcess::ServiceControllerStatus Status
{
System::ServiceProcess::ServiceControllerStatus get()
{
return (System::ServiceProcess::ServiceControllerStatus)_status->dwCurrentState;
}
}
Otros consejos
Creo que las enumeraciones no usan ^; intente eliminarlo de la declaración de propiedad y obtenga ().
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow