3.3通過配置指定和Unity的整合
另外一種方法是在配置源中指定配置的需要,你可以指定下面的一條或者多條:
- 你可以在Unity配置中指定想要的BlockExtensions
- 你可以在Unity配置中的type配置節指定如何創建企業庫對象,指定類型映射的關系,例如,當使用resolve方法的時候返回一個SqlDatabase,或者是返回指定的注入Database對象。也可以指定生命周期和其他構造策略。
企業庫的配置Scheme和Unity的配置Scheme是獨立的。但是你可以將Unity的配置節信息和企業庫的配置信息放在同一個文件中,例如Unity配置中的一個或者多個容器,返回類型,映射關系,返回實例,每個容器使用的extensions。關于Unity的具體配置Scheme可以參看Unity的文檔。
3.4使用企業庫整合facades
你可以使用Unity在企業庫對象實例中注入自定義的業務對象和類。但是一些企業庫提供的靜態的facades不能被注入。相反,你可以使用企業庫提供的非靜態facades,下面顯示一個靜態的facades和對應的非靜態facades。
Existing Facades New facade for use with Unity
ExceptionPolicy ExceptionManager
Tracer TracerManager
Cryptographer CryptographyManager
?
3.5將企業庫對象注入到自定義業務對象中
???? 你可以使用Unity將企業庫對象實例和服務注入到自定義業務對象和組件中,下面的代碼顯示了一個類如何依賴一個LogWriter實例。
?
????public?class?MyNewObjct
????{
????????public?MyNewObjct?(LogWriter?myLogger){
????????????myLogger?.Write?("some?message");
????????}
????}
?
?
????? 你可以在容器中載入企業庫核心extension和Logging模塊的extension,然后初始化自定義的類來完成對LogWriter的注入引用。
?????
?
?


????{
????????public?MyNewObject(LogWriter?logger)
????????{
????????????logger.Write(new?Microsoft.Practices.EnterpriseLibrary.Logging.?LogEntry("","",?0,?0,?System.Diagnostics.TraceEventType.Error,?"",?null));
????????}
????}
????class?Class1
????{
????????public?Class1()
????????{
????????????IUnityContainer?container?=?new?UnityContainer();
????????????container.AddNewExtension<EnterpriseLibraryCoreExtension>();
????????????container.AddNewExtension<LoggingBlockExtension>();
????????????MyNewObject?obj?=?container.Resolve<MyNewObject>();?
????????}
????}
?
4、通過構造函數直接創建企業庫對象
下面的代碼顯示了如何通過構造函數創建SqlDatabase對象
?
?
未完待續。。。。。。。。。。。。。。。。。。。。