zoukankan      html  css  js  c++  java
  • [No000085]C#反射Demo,通过类名(String)创建类实例,通过方法名(String)调用方法

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Reflection;
    using System.Text;
    class test
    {
        public void Method()//1
        {
            Console.WriteLine("1:__" + "Method调用成功!");
        }
        public void Method(string str)//2
        {
            Console.WriteLine("2:__" + str);
        }
    
        public string Method(string str1, string str2)//3
        {
            string className1 = this.GetType().FullName;//非静态方法中获取类名
            string className2 = MethodBase.GetCurrentMethod().ReflectedType.FullName;//静态方法中的获取类名
            Console.WriteLine("3:__;类名"+className1+"_"+ className2);
            return "3:__" + str1 + str2;
        }
    }
    class Program
    {
        public static void run(string testcase)
        {
            string strClass = "test";  //命名空间+类名
            string strMethod = "Method";//方法名
    
            Type type;
            object obj;
    
            type = Type.GetType(strClass);//通过string类型的strClass获得同名类“type”
            obj = System.Activator.CreateInstance(type);//创建type类的实例 "obj"
    
            MethodInfo method = type.GetMethod(strMethod, new Type[] { });//取的方法描述//通过string类型的strMethod获得同名的方法“method”//1
            method.Invoke(obj, null);//type类实例obj,调用方法"method"//1
    
            method = type.GetMethod(strMethod, new Type[] { typeof(String) });//取的方法描述//2
            object[] objs = new object[] { testcase };
            method.Invoke(obj, objs);//t类实例obj,调用方法"method(testcase)"//2
    
            method = type.GetMethod(strMethod, new Type[] { typeof(String), typeof(String) });//取的方法描述//2
            var result = (string)method.Invoke(obj, new object[] { "a", "b" });//3
            Console.WriteLine(result);//3
    
            //string className = this.GetType().FullName;
            string className = MethodBase.GetCurrentMethod().ReflectedType.FullName;//静态方法中的获取类名
            Console.WriteLine(className);
            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            string testcase = "测试呀";//自己定义的类
            run(testcase);
        }
    }
  • 相关阅读:
    MVC模式在Java Web应用程序中的实例分析
    MVC模式在Java Web应用程序中的实现
    设计模式简析
    《大型网站技术架构:核心原理与技术分析》5,6,7章简析
    spring引入HikariCP连接池
    sring引入mybatis
    spring中通过JNDI、DBCP、C3P0配置数据源
    springMVC框架搭建
    Timer定时执行
    SQL大杂烩
  • 原文地址:https://www.cnblogs.com/Chary/p/No000085.html
Copyright © 2011-2022 走看看