【问题标题】:Calling a static function given a type name [duplicate]调用给定类型名称的静态函数[重复]
【发布时间】:2013-08-06 06:34:17
【问题描述】:

我有一个包含类型名称的字符串。我想在反射中获取类型,并调用静态方法。 我想让代码尽可能简单。 像这样:

public class MyClass {    
          static int foo() 
          {
             return 7;
          }; 
}

var MyClassType = Type.GetType("MyClass"); 
// your help here! 
int res = (MyClassType).foo();

谢谢!

【问题讨论】:

    标签: c# reflection static-methods


    【解决方案1】:

    您需要指定正确的绑定标志才能使这项工作:

    // NOTE: Use full name for "MyClass", incuding any namespaces.
    var myClassType = Type.GetType("MyClass");
    int res = (int)myClassType.GetMethod("foo", BindingFlags.NonPublic | BindingFlags.Static).Invoke(null, null);
    

    【讨论】:

    • 谢谢!我是否也必须将方法名称作为字符串提供?有没有办法将其转换为 MyClass 类型?
    • @Adibe7 是的,使用反射时需要将方法名称指定为字符串。 (您在这里谈论的是“foo”。)您的意思是“类名”吗?如果真的是课程,那么您可以这样做:var myClassType = typeof(MyClass);
    【解决方案2】:

    试试这样:

    int res = Type.GetType("MyClassType").GetMethod("foo").Invoke(null, null);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      • 2021-05-17
      • 2012-03-18
      • 1970-01-01
      • 2012-05-20
      相关资源
      最近更新 更多