|
軟件設(shè)計(jì)有一句話叫做約定優(yōu)于配置,很多人將其作為拒絕配置的理由。但是,約定和配置的使用,都有個(gè)度的問(wèn)題。我不贊為了所謂的擴(kuò)展性,為你的應(yīng)用設(shè)計(jì)一套只有你自己才能看懂的配置體系。但是,在很多場(chǎng)景中,配置是提供應(yīng)用靈活度的首要甚至是唯一途徑。對(duì)于框架的設(shè)計(jì)者來(lái)說(shuō),對(duì)于配置的駕馭是一項(xiàng)基本的技能。
可能你很少使用自定義配置,可能你理解的自定義配置僅僅限于AppSetting,不過(guò)我想你應(yīng)該對(duì)于System.Configuration這個(gè)命名空間下的幾個(gè)基本的類型有基本的了解。比如ConfigurationSection、ConfigurationElement、ConfigurationElementCollection等。本篇文章不會(huì)介紹關(guān)于System.Configuration的基礎(chǔ)知識(shí),而是通過(guò)一個(gè)簡(jiǎn)單的例子為你講述一些所謂高級(jí)的知識(shí)點(diǎn),比如不可識(shí)別配置元素的動(dòng)態(tài)解析。(源代碼從這里下載)
目錄
一、通過(guò)自定義配置實(shí)現(xiàn)的最終效果
二、相關(guān)配置類型的定義
三、兩個(gè)重要的類型:NameTypeConfigurationElement和NameTypeConfigurationElementCollectionT
四、ResourceProviderFactory的定義
五、補(bǔ)充
一、通過(guò)自定義配置實(shí)現(xiàn)的最終效果
為了讓大家對(duì)自定義配置的作用有一個(gè)深刻的映像,我們先來(lái)給出一個(gè)簡(jiǎn)單的例子。我們采用在《.NET的資源并不限于.resx文件,你可以采用任意存儲(chǔ)形式》中介紹的關(guān)于自定義ResourceManager以實(shí)現(xiàn)對(duì)多種資源存儲(chǔ)形式的支持。現(xiàn)在只關(guān)注與資源的讀取,我們將基于不同存儲(chǔ)形式的資源讀取操作實(shí)現(xiàn)在相應(yīng)的ResourceProovider中,它們實(shí)現(xiàn)如下一個(gè)簡(jiǎn)單的IResourceProvider接口。
1: public interface IResourceProvider
2: {
3: object GetObject(string key);
4: }
NET技術(shù):通過(guò)自定義配置實(shí)現(xiàn)插件式設(shè)計(jì),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。