最近封裝了個功能非常類似於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 得看被移數是正還是負。