Frage

Ich habe eine Baugruppe, geschrieben in C ++ \ CLI, die einige von Aufzählungen, zur Verfügung gestellt von .Net verwendet. Es hat eine solche Art von Eigenschaften:

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

es funktioniert gut, aber wenn ich diese Versammlung von meinem C # -Code verwenden, geben Sie diese Eigenschaft ist

System.Enum

, und ich habe, um Typ-Cast

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

Die Frage ist einfach: warum ist es so, und wie man es beheben

?
War es hilfreich?

Lösung

In C ++ / CLI ^ ist wie die analogen * in Standard C ++. Da Aufzählungen sind Werttypen der ^ sollte nicht anders aufgenommen werden Sie sehen, wie sie als System.Enum .

Entfernen Sie die ^ und Sie erhalten die korrekte Auszählung auf C # Seite.

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

Andere Tipps

Ich denke, Aufzählungen verwenden Sie nicht die. ^ - probieren Sie es aus der Eigenschaftsdeklaration zu entfernen und get ()

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top