سؤال

لدي تجميع مكتوب بلغة 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().

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top