程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# 通過反射實現類似MVC路由的機制,

C# 通過反射實現類似MVC路由的機制,

編輯:C#入門知識

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,並根據類名查找類 類的訪問修飾符一定要是 public
12                 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                     else
28                     {
29                         throw new Exception("沒有找到方法");
30                     }
31                 }
32                 else
33                 {
34                     throw new Exception("沒有找到類");
35                 }

 

 轉載請注明 http://www.cnblogs.com/cainiaodage/p/3924165.html 


c語言中符號<<是什

左移運算符(<<)

將一個運算對象的各二進制位全部左移若干位(左邊的二進制位丟棄,右邊補0)。

例:a = a << 2 將a的二進制位左移2位,右補0,

左移1位後a = a * 2;

若左移時捨棄的高位不包含1,則每左移一位,相當於該數乘以2。
右移運算符(>>)

將一個數的各二進制位全部右移若干位,正數左補0,負數左補1,右邊丟棄。

操作數每右移一位,相當於該數除以2。

例如:a = a >> 2 將a的二進制位右移2位,

左補0 or 補1 得看被移數是正還是負。
 

c語言中符號<<是什

左移運算符(<<)

將一個運算對象的各二進制位全部左移若干位(左邊的二進制位丟棄,右邊補0)。

例:a = a << 2 將a的二進制位左移2位,右補0,

左移1位後a = a * 2;

若左移時捨棄的高位不包含1,則每左移一位,相當於該數乘以2。
右移運算符(>>)

將一個數的各二進制位全部右移若干位,正數左補0,負數左補1,右邊丟棄。

操作數每右移一位,相當於該數除以2。

例如:a = a >> 2 將a的二進制位右移2位,

左補0 or 補1 得看被移數是正還是負。
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved