Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Invokemember方法无法调用公共静态类下的方法_C#_Invokemember - Fatal编程技术网

C# Invokemember方法无法调用公共静态类下的方法

C# Invokemember方法无法调用公共静态类下的方法,c#,invokemember,C#,Invokemember,所以我用这个从我的dll调用一个方法 string sp = "dynamicmethodname"; Type TypeObj = typeof(DLLclass); Object MyObj = Activator.CreateInstance(TypeObj); TypeObj.InvokeMember(sp, BindingFlags.InvokeMethod | BindingFlags.Default, null, MyObj, new Object[] { gp }); 如

所以我用这个从我的dll调用一个方法

string sp = "dynamicmethodname";

Type TypeObj = typeof(DLLclass);
Object MyObj = Activator.CreateInstance(TypeObj);
TypeObj.InvokeMember(sp, BindingFlags.InvokeMethod | BindingFlags.Default, null, MyObj, new Object[] { gp });  
如果我的方法刚好在我的公共类之下,它就会起作用。但当我试着做这样的事情时

public class Test {
   public static class Met1{
     public static void _Validate(string gp){
      functions here.....
    }
  }
}

invokemember方法将不再到达my _Validate方法。我想知道为什么它不再有效。

关于@Charleh所写内容的完整示例:

public class Test
{
    public static class Met1
    {
        public static void _Validate(string gp)
        {
            Console.WriteLine(gp);
        }
    }
}

MethodInfo method = typeof(Test.Met1).GetMethod("_Validate");
// Or 
// MethodInfo method = typeof(Test.Met1).GetMethod("_Validate", BindingFlags.Static | BindingFlags.Public);
// or
// MethodInfo method = typeof(Test.Met1).GetMethod("_Validate", BindingFlags.Static | BindingFlags.Public, null, new[] { typeof(string) }, null);

method.Invoke(null, new object[] { "Hello world " });

编译:

您无法创建静态类的实例-Activator.CreateInstance是否实际工作?如果您想在静态类上调用一个方法,您可以直接使用invoke(并将null传递给实例参数):请参见这里@Charleh Yah,如果我的方法正处于我的公共类测试中,它就可以工作。但是我需要为我的方法传递参数…您仍然可以使用Invoke传递参数…-更具体地说,这个重载:
对象[]
是params。。