您的位置:首页 > 编程语言 > C#

C#反射Assembly 使用说明

2017-10-18 11:40 537 查看
  var clazzNm = mappingMstDt.Rows[0][CommConst.ADDITION_PROC_CLASS_NM].ToString();

                    if (!string.IsNullOrEmpty(clazzNm))

                    {

                        // class名

                        classNm = mappingMstDt.Rows[0][CommConst.ADDITION_PROC_CLASS_NM];

                        // 追加処理

                        AdditionClassProc();
                    }

   /// <summary>

        /// 追加処理

        /// </summary>

        private void AdditionClassProc()

        {

            logger.Info("RenkeiService#AdditionClassProc() Start");

            if (assembly == null)

            {

//获取dll文件

var = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase.Replace(CommConst.FILE_URI, "")) + CommConst.YEN_MARK + Utility.Config.AppSettings.Settings[CommConst.ADDITION_DLL_PATH].Value);

//Assembly 通过此类可以加载操纵一个程序集,并获取程序集内部信息 

                assembly = Assembly.Load(AssemblyName.GetAssemblyName(Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase.Replace(CommConst.FILE_URI, "")) + CommConst.YEN_MARK + Utility.Config.AppSettings.Settings[CommConst.ADDITION_DLL_PATH].Value));

            }

//利用反射与Activator结合来创建对象。

System.Type类
     Type是最常用到的类,通过Type可以得到一个类的内部信息,也可以通过它反射创建一个对象。一般有三个常用的方法可得到Type对象。
利用typeof() 得到Type对象
Type type=typeof(Example);
利用System.Object.GetType() 得到Type对象
Example example=new Example();
Type type=example.GetType();
利用System.Type.GetType() 得到Type对象
Type type=Type.GetType("MyAssembly.Example",false,true);
注意参数0是类名,参数1表示若找不到对应类时是否抛出异常,参数1表示类名是否区分大小写

            dynamic clazz = Activator.CreateInstance(assembly.GetType(classNm));

//参数设定

            var runMethodParams = new object[] { logger, util, ReportId, DempyoNo, ActionType, ReportNo, jikkonTm };

//通过 System.Reflection.MethodInfo能查找到类里面的方法

            var runMethod = clazz.GetType().GetMethod(CommConst.RUN_METHOD);

//通过反射方法执行类里面的方法

            runMethod.Invoke(clazz, runMethodParams);

            logger.Info("RenkeiService#AdditionClassProc() End");

        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: