通过字符串获取静态类

本文关键字:静态类 获取 字符串 | 更新日期: 2023-09-27 18:01:39

Type.GetType("System.Windows.Forms.MessageBox")
    .GetMethod("Show", new Type[] { Type.GetType("System.String") })
    .Invoke(null, new object[] { "test" });

我试图调用MessageBox.Show("test")方法,仅使用类和方法名称的字符串值。但是,我无法通过名称获得MessageBox的类型。

任何想法?

通过字符串获取静态类

您需要指定程序集的全名。
(它位于GAC -如果你有win 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" });
        string type = typeof(MessageBox).AssemblyQualifiedName;
        Type.GetType(type).GetMethod("Show", new Type[] { Type.GetType("System.String") }).Invoke(null, new object[] { "test" });

好了,各位,AssemblyQualifiedName起作用了