문제

객체의 유형을 확인하는 간단한 방법이 있습니까? 다음 줄을 따라 무언가가 필요합니다.

MyObject^ mo = gcnew MyObject();
Object^ o = mo;

if( o->GetType() == MyObject )
{
    // Do somethine with the object
}
else
{
    // Try something else
}

현재 나는 중첩 트리 캐치 블록을 사용하고 있습니다. System::InvalidCastException못생긴 느낌이지만 작동합니다. 나는 위의 코드와 같은 것을 시도하고 프로필을 시도하여 더 빠르거나 느리게/읽을 수 있지만 구문을 해결할 수 없는지 확인하려고했습니다.

누군가가 궁금하다면, 이것은 단일 대기열이 작업 할 데이터를 제공하는 스레드에 들어가는 것에서 비롯됩니다. 때때로 나는 설정을 변경하고 데이터 큐를 통해 전달하는 것이 간단한 방법입니다.

도움이 되었습니까?

해결책

당신이 사용할 수있는 MyObject::typeid C ++/CLI에서와 같은 방식으로 typeof(MyObject) C#에서 사용됩니다. 아래 코드 아래 코드는 귀하의 질문에서 뻔뻔스럽게 복사하고 수정되었습니다 ...

MyObject^ mo = gcnew MyObject();
Object^ o = mo;

if( o->GetType() == MyObject::typeid )
{
    // Do somethine with the object
}
else
{
    // Try something else
}

다른 팁

체크 아웃해야합니다 방법 : 구현은 C ++의 C# 키워드입니다.:

이 주제는 IS의 기능을 구현하는 방법과 Visual C ++에서 C# 키워드로 보여줍니다.

편집하다: 나는 이것을 여기에 남겨 둘 것이다. 그러나이 대답은 C ++를위한 것입니다. 아마도 CLI를 위해 이것을하는 것과 약간 관련이 없을 것입니다.

RTTI (실행 시간 유형 정보)로 컴파일해야합니다. 그런 다음 Wikipedia 기사를보십시오 http://en.wikipedia.org/wiki/runtime_type_information RTTI를 검색하고 Google을 검색하십시오. 당신을 위해 일해야합니다.

반면에 모든 데이터 클래스에 대한 가상 기본 클래스를 원할 수도 있습니다.

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