0

だから私はこれを使って自分の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 クラスのすぐ下にある場合に機能します。しかし、私がこのようなことをしようとしたとき。

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

invokemember メソッドが _Validate メソッドに到達しなくなりました。どうしてうまくいかないのか不思議です。

4

1 に答える 1

0

@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 " });

コンパイル済み: https://ideone.com/JIoHar

于 2015-06-24T09:32:44.920 に答える