如何在C++/CLI中检查对象的类型?

Jon*_*age 12 types c++-cli detection

有没有一种简单的方法来检查对象的类型?我需要以下几点:

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

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

目前我正在使用嵌套的try-catch块来寻找System::InvalidCastException那些感觉很丑但有效的s.我打算尝试编写类似上面代码的内容,看看它是否更快/更慢/可读但是无法解决语法甚至尝试.

如果有人想知道,这来自于让一个队列进入一个提供数据工作的线程.有时我想更改设置并通过数据队列传递它们是一种简单的方法.

mcd*_*ave 27

您可以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
}
Run Code Online (Sandbox Code Playgroud)


And*_*are 9

您应该查看如何:在C++中实现和C#关键字:

本主题说明如何在Visual C++中实现is和C#关键字的功能.