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

标签 c++-cli types detection

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

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

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

目前我正在使用嵌套的 try-catch 块寻找 System::InvalidCastException s 感觉丑陋但有效。我打算尝试分析类似上面的代码的东西,看看它是否更快/更慢/可读,但无法计算出甚至尝试的语法。

如果有人想知道,这是因为有一个队列进入了一个线程,该线程提供了要处理的数据。有时我想更改设置并通过数据队列传递它们是一种简单的方法。

最佳答案

您可以使用 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++-cli - 如何在 C++/CLI 中检查对象的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2410721/

相关文章:

c# - 将 C# 数字类型从一种转换为另一种的学术路线是什么?

arrays - 向量、矩阵和数组数据类型之间有什么区别?

types - 如何使用 Raku 类型系统强制执行不变性?

java - 比较两个图像以进行运动检测

doctrine-orm - Doctrine 2 重复检测

c++ - 将类类型传递给 Windows 窗体构造函数并必须将其转换为类指针才能使用它

c++-cli - C++/CLI : Define everything in . cpp 或在 .h 或 .cpp 中分开?

c# - 传递结构似乎会损坏数据

class - 非托管 var 作为托管类 c++ 的成员

ios - 如何检测 iPhone 相机屏幕上物体的移动?