C++\CLI에서 열거형 변환 관련 문제
-
02-07-2019 - |
문제
.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()에서 이를 제거해 보세요.
제휴하지 않습니다 StackOverflow