C#获取类以及类下的方法(用于Asp.Net MVC)

 

在C#中,实现动态获取类和方法主要通过反射来实现,要引用System.Reflection。

public ActionResult GetControllerAndAction()
      List<Type> controllerTypes = new List<Type>();    //创建控制器类型列表
   var assembly = Assembly.Load("MySoft.UI");    //加载程序集
   controllerTypes.AddRange(assembly.GetTypes().Where(type => typeof(IController).IsAssignableFrom(type) && type.Name!="ErrorController"));    //获取程序集下所有的类,通过Linq筛选继承IController类的所有类型
   StringBuilder jsonBuilder = new StringBuilder();    //创建动态字符串,拼接json数据    注:现在json类型传递数据比较流行,比xml简洁
   jsonBuilder.Append("[");
   foreach (var controller in controllerTypes)//遍历控制器类
   {
       jsonBuilder.Append("{\"controllerName\":\"");
      jsonBuilder.Append(controller.Name);
       jsonBuilder.Append("\",\"controllerDesc\":\"");
       jsonBuilder.Append((controller.GetCustomAttribute(typeof(DescriptionAttribute)) as DescriptionAttribute)==null?"" : (controller.GetCustomAttribute(typeof(DescriptionAttribute)) as DescriptionAttribute).Description);    //获取对控制器的描述Description
       jsonBuilder.Append("\",\"action\":[");
       var actions = controller.GetMethods().Where(method => method.ReturnType.Name == "ActionResult");    //获取控制器下所有返回类型为ActionResult的方法,对MVC的权限控制只要限制所以的前后台交互请求就行,统一为ActionResult
       foreach (var action in actions)
       {
           jsonBuilder.Append("{\"actionName\":\"");
           jsonBuilder.Append(action.Name);
           jsonBuilder.Append("\",\"actionDesc\":\"");
           jsonBuilder.Append((action.GetCustomAttribute(typeof(DescriptionAttribute)) as DescriptionAttribute) == null ? "" : (action.GetCustomAttribute(typeof(DescriptionAttribute)) as DescriptionAttribute).Description);    //获取对Action的描述
           jsonBuilder.Append("\"},");
       }
       jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
       jsonBuilder.Append("]},");
   }
   jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
   jsonBuilder.Append("]");
       return Content(jsonBuilder.ToString(),"json/text");t"); 

转载于:https://www.cnblogs.com/Apollo/p/5541107.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值