zoukankan      html  css  js  c++  java
  • C#动态方法调用


     

    Dynamic Method Invocation

    One very useful feature related to Reflection is the ability to create objects dynamically and call methods on them.
    note : Class1.cs has methods which will be dynamically invoked at runtime from the DynaInvoke.cs

    Class1.cs

    using System;
    class Class1{
           public static String method1()
           {
               return "I am Static method (method1) in class1";
           }
           public String method2()
           {
               return "I am a Instance Method (method2) in Class1";
           }
           public String method3(String s)
           {
              return "Hello " + s;
           }
    }
    save this file as Class1.cs and Compile c:/>csc /t:library Class1.cs

    DynaInvoke.cs

    using System;
    using System.Reflection;
    class DynamicInvoke
    {
    public static void Main(String [] args)
    {

    String path = "Class1.dll"
    Assembly a = Assembly.Load(path);

    //Invoking a static method
    Type mm = a.GetType("Class1");
    String i = (String) mm.InvokeMember ("method1",BindingFlags.Default | BindingFlags.InvokeMethod,null,null,new object [] {}); Console.WriteLine(i);

    //Invoking a non-static method
    object o = Activator.CreateInstance(mm);
    i = (String) mm.InvokeMember("method2",BindingFlags.Default | BindingFlags.InvokeMethod,null,o,new object [] {});
    Console.WriteLine(i);

    //Invoking a non-static method with parameters
    object [] par = new object[] {"kunal"};
    i = (String) mm.InvokeMember("method3",BindingFlags.Default | BindingFlags.InvokeMethod,null,o,par);
    Console.WriteLine(i);
    }
    }

    save this file as DynaInvoke.cs and Compile c:/>csc DynaInvoke.cs and run C:\>DynaIn

     

  • 相关阅读:
    c++中的stack实现
    非虚函数是静态绑定
    函数返回const,以便控制访问
    析构函数为虚函数
    c++中初始化列表顺序和声明顺序一致
    define的误用
    模板就是让编译器帮你写代码
    mysql代码中设置变量
    拼接index
    python import vs from import
  • 原文地址:https://www.cnblogs.com/chance/p/478172.html
Copyright © 2011-2022 走看看