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?

¿Fue útil?

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
scroll top