Type.GetType("System.Windows.Forms.MessageBox")
.GetMethod("Show", new Type[] { Type.GetType("System.String") })
.Invoke(null, new object[] { "test" });
我尝试调用MessageBox.Show("test")
方法,只使用类和方法名称的字符串值。但是,我无法通过其名称获得MessageBox
的类型。
有什么想法吗?
答案 0 :(得分:3)
您需要指定程序集的全名 (它位于GAC中 - 如果您获胜7,您可以在以下位置看到程序集:%windir%\ assembly):
Type t = Type.GetType("System.Windows.Forms.MessageBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
var method = t.GetMethod("Show", new Type[] { Type.GetType("System.String") });
method.Invoke(null, new object[] { "test" });
答案 1 :(得分:1)
string type = typeof(MessageBox).AssemblyQualifiedName;
Type.GetType(type).GetMethod("Show", new Type[] { Type.GetType("System.String") }).Invoke(null, new object[] { "test" });
好的每个人,AssemblyQualifiedName
都有效。