如何在CheckBox中使用GetType()?

时间:2011-05-19 15:49:45

标签: .net c++

我目前正在使用C ++和.NET 1.1(不要问......),我想检查对象是否是CheckBox。

GetType似乎是显而易见的选择,但出于某种原因,我无法让它像我想要的那样工作。在CheckBox的实例上使用GetType()可以正常工作,但尝试使用Type::GetType("System.Windows.Forms.CheckBox")则不行。

以下代码将在第二行引发异常,尽管应该(至少在我看来)是一个完美格式化的字符串被馈送到GetType(temp)。如果我替换temp代替"System.Int32",那么它也能正常工作。

String* temp = (this->checkBox1->GetType())->ToString();
temp = (System::Type::GetType(temp))->ToString();

这是为什么? =)

我可以想象几种不同的方法可以解决这个问题,但这只是让我觉得我不能按照我认为的方式工作。

2 个答案:

答案 0 :(得分:2)

除非您要加载的类型位于mscorlib或调用程序集中,否则您需要提供完全限定的程序集名称,包括密钥等。有关详细信息,请参阅docs for Type::GetType(string)

如果您提前知道装配,Assembly::GetType(string)可能更简单 方法

编辑:我假设你在编译时不知道编译类型,只是作为一个字符串。否则使用Jared的答案:)

答案 1 :(得分:2)

看起来您正在使用带有托管扩展的C ++。如果是这样,请尝试以下

if (this->checkBox1->GetType() == __typeof(CheckBox)) {
  ...
}