Ein Problem mit Aufzählungen in C ++ \ CLI Umwandeln
-
02-07-2019 - |
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
?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 ()