zoukankan      html  css  js  c++  java
  • reflact中GetMethod方法的使用

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Reflection;
    
    namespace MethodInfoInvokeDemo
    {
     public class ReflectTest
     {
     public void MethodWithNoParaNoReturn()
     {
     Console.WriteLine("不带参数且不返回值的方法");
     }
    
    public string MethodWithNoPara()
     {
     Console.WriteLine("不带参数且有返回值的方法");
    return "MethodWithNoPara";
     }
    
    public string Method1(string str)
     {
     Console.WriteLine("带参数且有返回值的方法");
    return str;
     }
    
    public string Method2(string str, int index)
     {
     Console.WriteLine("带参数且有返回值的方法");
    return str + index.ToString();
     }
    
    public string Method3(string str, out string outStr)
     {
     outStr = "bbbb";
     Console.WriteLine("带参数且有返回值的方法");
    return str;
     }
    
    public static string StaticMethod()
     {
     Console.WriteLine("静态方法");
    return "cccc";
     }
     }
    
    class Program
     {
     static void Main(string[] args)
     {
     Type type = typeof(ReflectTest);
     object reflectTest = Activator.CreateInstance(type);
    
    //不带参数且不返回值的方法的调用
    MethodInfo methodInfo = type.GetMethod("MethodWithNoParaNoReturn");
     methodInfo.Invoke(reflectTest, null);
    
    Console.WriteLine();
    
    //不带参数且有返回值的方法的调用
    methodInfo = type.GetMethod("MethodWithNoPara");
     Console.WriteLine(methodInfo.Invoke(reflectTest, null).ToString());
    
    Console.WriteLine();
    
    //带参数且有返回值的方法的调用
    methodInfo = type.GetMethod("Method1", new Type[]{typeof(string)});
     Console.WriteLine(methodInfo.Invoke(reflectTest, new object[]{"测试"}).ToString());
    
    Console.WriteLine();
    
    //带多个参数且有返回值的方法的调用
    methodInfo = type.GetMethod("Method2", new Type[] { typeof(string), typeof(int) });
     Console.WriteLine(methodInfo.Invoke(reflectTest, new object[] { "测试", 100 }).ToString());
    
    //Console.WriteLine();
    
    //methodInfo = type.GetMethod("Method3", new Type[] { typeof(string), typeof(string) });
     //string outStr = "";
     //Console.WriteLine(methodInfo.Invoke(reflectTest, new object[] { "测试", outStr }).ToString());
    
    Console.WriteLine();
    
    //静态方法的调用
    methodInfo = type.GetMethod("StaticMethod"); 
     Console.WriteLine(methodInfo.Invoke(null, null).ToString());
    
    Console.ReadKey();
     }
     }
    }
    
  • 相关阅读:
    Daily scrum[2013.12.03]
    Daily scrum[2013.12.02]
    gcc编译使用math.h的c程序
    推荐两篇分布式协调算法paxos的文章
    Linux系统如何查看版本信息
    [原]gcc编译器强别名导致的问题
    [转]Linux 在一个命令行上执行多个命令
    [转] Python执行系统命令的方法 os.system(),os.popen(),commands
    [转]Web服务器性能/压力测试工具http_load、webbench、ab、Siege使用教程
    [转]MySQL数据库基准压力测试工具之MySQLSlap使用实例
  • 原文地址:https://www.cnblogs.com/naliang/p/4174215.html
Copyright © 2011-2022 走看看