微軟企業庫4 1學習筆記(七)建立物件 續集1

2022-09-23 08:57:00 字數 1459 閱讀 3350

3.2使用unity模組建立企業庫物件

下面介紹如何使用前面的方法獲取企業庫物件的例項。**示例如下

iunitycontainer containter 

=new

unitycontainer();

containter.addnewextension

<

enterpriselibrarycoreextension

>

();首先建立一個unity容器,並且新增企業庫核心配置擴充套件。

iunitycontainer ucontainer 

=new

unitycontainer();

iconfigurationsource source 

=new

fileconfigurationsource(@""

);ucontainer.addextension(

newenterpriselibrarycoreextension(source));

在你新增任何企業庫擴充套件(你可以在任何階段新增其他不是企業庫擴充套件的擴充套件)之前, 必須先在容器中新增enterpriselibrarycoreextension。如果在容器中已經存在一個企業庫擴充套件,你可以使用removeallextensions刪除它們,然後以正確的順序新增進去。

下一步就是在容器中新增你要使用的模組對應的模組擴充套件,如果又需要,可以新增多個進去。擴充套件的命名是以模組的名稱+blockextension,例如dataaccessblockextension,loggingblockextension等。**示例

ucontainer.addnewextension

<

cachingblockextension

>

();如果你使用的模組和其他模組有依賴的話,也要新增依賴模組的blockextension,當前版本提供的blockextension包括:  enterpriselibraryblockextension、dataaccessblockextension、cachingblockextension、securityblockextension、cryptographyblockextension、exceptionhandlingblockextension、loggingblockextension。 

現在你可以使用容器的resolve建立provider的物件和在企業庫標準配置中定義的物件。下面的**示例了建立cachemananger例項

icachemanager cachemanager 

=ucontainer.resolve

<

icachemanager

>

();當容器被**之後,容器擴充套件產生的企業庫配置將會丟失。所以,在**中需要對容器有一個強引用。另外,你用企業庫擴充套件建立,並且用resolve方法獲取的物件都是singleton模式,生命週期是由unity容器來控制的。當容器被**dispose或者超出變數範圍之後,他們也會消失。