C# 依賴注入中的 控制反轉(Assembly)實現
阿新 • • 發佈:2018-12-20
對於剛接觸依賴注入的人來說,什麼面向切面,反射,依賴注入等等一時不好理解, 首先,都在說控制反轉,既然有反轉那麼就會有控制正轉,相信很多網上尋找控制反轉資料中,很少有提到過正轉。 正轉也簡單,就是我們通常呼叫的方式,由底層類庫生產,邏輯層通過引用並進行new 例項化,進行呼叫,這就是正轉,正轉與之相反,不通過new直接呼叫,這就是反轉,做過C#呼叫C++專案中的動態庫時大概都知道,Assembly類
下面程式碼以簡單的敘述一下控制反轉到底是什麼:
public void LoadAssembly() { //DLL所在的絕對路徑 Assembly assembly = Assembly.LoadFrom(AppDomain.CurrentDomain.BaseDirectory + "Entity.dll"); //注意寫法:程式集.類名 Type type = assembly.GetType("Entity.ClassName"); //獲取類中的公共方法GetResule MethodInfo methed = type.GetMethod("MethodName"); //建立物件的例項 object instance = System.Activator.CreateInstance(type); //執行方法 new object[]為方法中的引數 object result = methed.Invoke(instance, new object[] { }); }
現在知道為什麼很多依賴注入第三方開源,需要配置檔案,或者程式碼配置名稱空間及類的原因了吧