首页 > 代码库 > C# 通过反射实现类似MVC路由的机制
C# 通过反射实现类似MVC路由的机制
最近封装了个功能非常类似于MVC的路由。//MVC路由机制先找到Controller Action
- 什么是反射
反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获 得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数 等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。
- 实现思路
先是根据DLL名称进行装载,然后反射根据类型查找类,在根据方法名查找方法。可能作者才疏学浅写的不是很好,希望大家可以都多点评几点。以帮助我的提升。谢啦!
以下代码
1 //获取程序集名称 如果配置程序集名称为空,就使用当前的程序集名称 2 var assemblyName = ConfigurationManager.AppSettings["asseName"] == null ? Assembly.GetExecutingAssembly().GetName().Name : ConfigurationManager.AppSettings["asseName"].ToString(); 3 var className= "className";//类名 4 var methodName = "methodName";//方法名 5 6 if (string.IsNullOrEmpty(assemblyName)) 7 throw new Exception("程序集名称不能为空"); 8 if (string.IsNullOrEmpty(className)) 9 throw new Exception("类名不能为空");10 11 //反射指定的DLL,并根据类名查找类 类的访问修饰符一定要是 public12 Type type = Assembly.Load(assemblyName).GetExportedTypes().FirstOrDefault(13 o => o.Name.IndexOf(domainResourceIndex, StringComparison.OrdinalIgnoreCase) >= 0);14 15 if (type != null)16 {17 //创建类的实例18 object obj = (object)Activator.CreateInstance(type);19 //根据传入方法名,查找方法20 MethodInfo pMethod = type.GetMethod(methodName);21 22 if (pMethod != null)23 {24 //执行25 pMethod.Invoke(obj, new object[] { request, response });26 }27 else28 {29 throw new Exception("没有找到方法");30 }31 }32 else33 {34 throw new Exception("没有找到类");35 }
转载请注明 http://www.cnblogs.com/cainiaodage/p/3924165.html
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。