مشكلة في تحويل التعدادات في C++\CLI
-
02-07-2019 - |
سؤال
لدي تجميع مكتوب بلغة C++\CLI، والذي يستخدم بعض التعدادات المقدمة من .Net.لديها مثل هذا النوع من الخصائص:
property System::ServiceProcess::ServiceControllerStatus ^ Status
{
ServiceControllerStatus ^ get()
{
return (ServiceControllerStatus)_status->dwCurrentState;
}
}
إنه يعمل بشكل جيد، ولكن عندما أستخدم هذا التجميع من كود C# الخاص بي، فإن نوع هذه الخاصية هو
System.Enum
ولا بد لي من القيام بالنوع
if ((ServiceControllerStatus)currentService.Status == ServiceControllerStatus.Running)
//do smth
السؤال بسيط:لماذا هو كذلك، وكيفية اصلاحها؟
المحلول
في C++/CLI ^ يشبه المماثل * في معيار C++.لأن التعدادات هي أنواع القيمة ^ لا ينبغي أن يتم تضمينها وإلا فسوف تراها System.Enum.
قم بإزالة ^ وسترى التعداد الصحيح على جانب C#.
property System::ServiceProcess::ServiceControllerStatus Status
{
System::ServiceProcess::ServiceControllerStatus get()
{
return (System::ServiceProcess::ServiceControllerStatus)_status->dwCurrentState;
}
}
نصائح أخرى
أعتقد أن التعدادات لا تستخدم ^ -- حاول إزالتها من إعلان الخاصية وget().
لا تنتمي إلى StackOverflow