最近封裝了個功能非常類似於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
左移運算符(<<)
將一個運算對象的各二進制位全部左移若干位(左邊的二進制位丟棄,右邊補0)。
例:a = a << 2 將a的二進制位左移2位,右補0,
左移1位後a = a * 2;
若左移時捨棄的高位不包含1,則每左移一位,相當於該數乘以2。
右移運算符(>>)
將一個數的各二進制位全部右移若干位,正數左補0,負數左補1,右邊丟棄。
操作數每右移一位,相當於該數除以2。
例如:a = a >> 2 將a的二進制位右移2位,
左補0 or 補1 得看被移數是正還是負。
左移運算符(<<)
將一個運算對象的各二進制位全部左移若干位(左邊的二進制位丟棄,右邊補0)。
例:a = a << 2 將a的二進制位左移2位,右補0,
左移1位後a = a * 2;
若左移時捨棄的高位不包含1,則每左移一位,相當於該數乘以2。
右移運算符(>>)
將一個數的各二進制位全部右移若干位,正數左補0,負數左補1,右邊丟棄。
操作數每右移一位,相當於該數除以2。
例如:a = a >> 2 將a的二進制位右移2位,
左補0 or 補1 得看被移數是正還是負。