asp.net-mvc-3 – 查找接受字符串作为参数的所有ASP.NET MVC公共
发布时间:2020-12-16 07:27:59 所属栏目:asp.Net 来源:网络整理
导读:我试图使用 Nitriq来获取我的项目中接受字符串作为输入的所有公共操作的列表. 这是我尝试过的: var stringType = Types.Where(t = t.FullName == "System.String").Single();var arTypes = Types.Where(t = t.FullName == "System.Web.Mvc.ActionResult").S
我试图使用
Nitriq来获取我的项目中接受字符串作为输入的所有公共操作的列表.
这是我尝试过的: var stringType = Types.Where(t => t.FullName == "System.String").Single(); var arTypes = Types.Where(t => t.FullName == "System.Web.Mvc.ActionResult").Single().DerivedTypes; var results = from m in Methods let DerivesFromAR = arTypes.Contains(m.ReturnType) where m.ParameterTypes.Contains(stringType) && DerivesFromAR select new { m.MethodId,m.Name,m.FullName }; 我正在使用Nitriq,因为这似乎是一个理想的任务,但我对其他方法持开放态度(最好不要手工搜索我的所有方法). 解决方法
您不应该查找从System.Web.Mvc.ActionResult派生的类型,而是查找从System.Web.Mvc.Controller派生的类型,因为这些类包含返回操作结果的方法.
使用System.Reflection和System.Linq的解决方案,从应该扫描的程序集中使用 var controllerType = typeof(System.Web.Mvc.Controller); var actionResultType = typeof(System.Web.Mvc.ActionResult); var parameterType = typeof(string); // find all controllers by checking their class var controllers = Assembly.GetCallingAssembly().GetTypes().Where(t => controllerType.IsAssignableFrom(t)); // find all actions by checking their return type and parameter type var actions = controllers.SelectMany(c => c.GetMethods()).Where(m => actionResultType.IsAssignableFrom(m.ReturnType) && m.GetParameters().Any(p => parameterType.IsAssignableFrom(p.ParameterType))); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-4 – IEDriverServer在使用模拟时引发错误
- asp.net-mvc – 是否可以在按钮点击时“交换”部分视图?
- asp.net-mvc – Orchard CMS:退出(注销)确认页面
- jwt – ASP.NET 5 OAuthBearerAuthentication:以下认证方案
- asp.net – 如何获取当前的月份和年份
- asp.net MVC的Html.RadioButton生成id和名称相同
- 一个类如何实现两个接口中同名同参数不同返回值的函数
- asp.net-mvc-3 – MVC 3对列表进行不显眼的验证
- asp.net-mvc – .NET MVC MultiSelectList和选定的值
- asp.net – 使用Active Directory的REST API的授权方法