我目前正在使用C++和.NET 1.1(不要问...),我想检查一个对象是否是CheckBox。如何将GetType()用于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();
这是为什么? =)
我可以想象几种不同的方法可以解决这个问题,但这只是让我误以为我无法按我认为应该的方式工作。
我会承认我不知道这意味着什么,但它像一个魅力。 =) – 2011-05-19 16:05:02
@Jon,'__typeof'运算符将为给定的命名值返回一个'Type'对象。 'Type'的实例可以直接比较,所以'GetType()== __typeof'实际上是要求“checkBox1的运行时类型是'CheckBox'类型吗? – JaredPar 2011-05-19 16:10:32
是的,我明白代码的作用,我只是不明白为什么它需要这样,但我猜我应该阅读一下托管扩展? =) – 2011-05-19 16:14:54