利用反射调用程序集方法

        /// <summary>
        /// 利用反射调用程序集方法
        /// </summary>
        /// <param name="assemblyName">程序集名</param>
        /// <param name="className">类名</param>
        /// <param name="methodName">方法名</param>
        /// <param name="objParams">方法参数</param>
        /// <returns>返回值</returns>
        public object InvokeMethod(string assemblyName, string className, string methodName, params object[] objParams)
        {
            object result = null;
            try
            {
                Assembly assembly = Assembly.Load(assemblyName);
                object instance = assembly.CreateInstance(assemblyName + "." + className);
                Type instType = instance.GetType();
                
                //查找匹配的方法
                foreach (MethodInfo m in instType.GetMethods(BindingFlags.Instance | BindingFlags.Public))
                {
                    if (m.Name == methodName && m.GetParameters().Length == objParams.Length)
                    {
                        result = m.Invoke(instance, objParams);
                        break;
                    }
                }
            }
            catch(Exception ex)
            {
                //...
            }
            return result;
        }

  

posted on 2016-07-06 15:57  Nichk  阅读(135)  评论(0)    收藏  举报