문제

.Net에서 제공하는 일부 열거형을 사용하는 C++\CLI로 작성된 어셈블리가 있습니다.그것은 다음과 같은 종류의 속성을 가지고 있습니다:

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++의 *와 유사합니다.열거형은 값 유형이므로 ^ 포함되어서는 안 됩니다. 그렇지 않으면 다음과 같이 표시됩니다. 시스템.열거형.

^를 제거하면 C# 측에 올바른 열거형이 표시됩니다.

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

다른 팁

열거형은 ^를 사용하지 않는 것 같습니다. 속성 선언 및 get()에서 이를 제거해 보세요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top