zoukankan      html  css  js  c++  java
  • C#反射的使用

    using System.Reflection;
    
    #region 反射方法
    
            /// <summary>
            /// 根据路径名称反射指定方法
            /// </summary>
            /// <param name="AssemblyName">程序集名称</param>
            /// <param name="ClassType">类名称(从程序集开始索引,如:BLL.Demo.Demo)</param>
            /// <param name="MethodName">方法名</param>
            /// <param name="Params">方法参数</param>
            /// <returns></returns>
            public static string ReflectionMethodFromName(string AssemblyName, string ClassType, string MethodName, object[] Params)
            {
                try
                {
                    Assembly assembly = Assembly.Load(AssemblyName);    //加载程序集
                    Type t = assembly.GetType(ClassType); //参数必须是类的全名
                    object o = Activator.CreateInstance(t);     //创建该类对象
                    MethodInfo mi = t.GetMethod(MethodName);    //获取指定方法
                    object result = mi.Invoke(o, Params);   //回调执行方法,并获取返回值
                    return result.ToString();
                }
                catch(Exception ex){ throw ex; }
                
            }
    
            /// <summary>
            /// 根据路径名称反射类,获取类实例
            /// </summary>
            /// <param name="AssemblyName">程序集名称</param>
            /// <param name="ClassType">类名称(从程序集开始索引,如:BLL.Demo.Demo)</param>
            /// <returns></returns>
            public static object ReflectionClassFromName(string AssemblyName, string ClassType)
            {
                try
                {
                    Assembly assembly = Assembly.Load(AssemblyName);    //加载程序集
                    Type t = assembly.GetType(ClassType); //参数必须是类的全名
                    object o = Activator.CreateInstance(t);     //创建该类对象
                    return o;
                }
                catch (Exception ex) { throw ex; }
            }
            
            #endregion

    注:Invoke的第一个参数为类实例,第二个参数为反射的方法的参数列表,如无参数直接传入null即可。

    通过反射,可以通过参数动态的调用指定的方法,降低结构间的耦合性

  • 相关阅读:
    angularjs下载地址
    Could not calculate build plan: Plugin org.apache.maven.plugins:maven-resources-plugin:2.6 or one of
    java.net.SocketException: No buffer space available 异常
    在ubuntu上安装svn+apache2
    MyBatis配置
    npm被墙解决方法
    XMPP_05_网络编程
    XMPP_04_环境安装(配置客户端)
    XMPP_03_环境安装(配置服务器)
    XMPP_02_环境安装(准备工作和配置数据库)
  • 原文地址:https://www.cnblogs.com/xiaomengshan/p/11282447.html
Copyright © 2011-2022 走看看