• 反射流程


     public Type RequestType { get; private set; } // 请求的类型        

    public Object Object { get; private set; } // 请求的对象        

    public MethodInfo Method { get; private set; }  // 请求的方法        

    public Object[] Parameters { get; private set; } // 请求的参数集合        

    public String TypePart { get; private set; }   // 请求的类型名称部分        

    public String MethodPart { get; private set; } // 请求的方法名部分

    TypePart = pairts[0];       //类名前缀

    MethodPart = pairts[1];  //方法名

    string assembly = System.Configuration.ConfigurationManager.AppSettings["MobileInterfaces"];

    //获取namespace路径,eg:Common.Web.Interfaces.Demo.Interfaces.{0}Service,Common.Web.Interfaces.Demo

    string typeName = string.Format(assembly, TypePart);

    //补全路径

     Type t = Type.GetType(typeName, false, true);//namespace路径,是否抛出异常,是否区分大小写

    RequestType = t;

    Method = t.GetMethod(pairts[1]); //获取方法

    //填充参数

    ParameterInfo[] pis = Method.GetParameters();//获取参数

    Parameters = new Object[pis.Length];

     Parameters = new Object[pis.Length];                  

     for (int i = 0; i < pis.Length; i++)                    

       {                       

          ParameterInfo info = pis[i];

                 val = Convert.ChangeType(context.Request[info.Name], info.ParameterType));

            //context.Request[info.Name],从url获取值

                  Parameters[i] = val;             

      }

      Object = Activator.CreateInstance(RequestType);//获取参数列表

     Object val = bag.Method.Invoke(bag.Object, bag.Parameters);//执行便获取返回值

    //轮询方式获取方法

     private MethodInfo FindMethod(Type t, string name)        

    {            

      var list = t.GetMethods();            

      foreach (MethodInfo method in list)            

        {               

            if (method.Name.Equals(name, StringComparison.CurrentCultureIgnoreCase))                

            {                    

              return method;                

            }            

        }            

      return null;        

    }

  • 相关阅读:
    Tomcat6.0的Thisisverylikelytocreateamemoryleak异常
    一个不错的能将HTML表格导出为excel,pdf等的jquery插件
    关于tomcat8在windows2008下高并发下问题的解决方案
    应用部署到JBOSS上遇到的问题
    [置顶] 将项目从tomcat 迁移到JBoss
    struts2 if标签示例
    用Java集合中的Collections.sort方法对list排序的两种方法
    SAP 关于标准成本、计划成本、目标成本、实际成本
    “癌症村”里的“净水神器”
    iis虚拟目录引发的路径问题
  • 原文地址:https://www.cnblogs.com/hongfu/p/4323756.html
Copyright © 2020-2023  润新知