配置綁定
本節學習,配置綁定---使用強類型對象承載配置數據,這樣做的目的是爲了更方便的管理配置對象。因爲,這意味着,我們可以直接從對象來查看配置的信息。如下,我們有一個json配置文件
{
"key1": "value1",
"key2": 0,
"Section1": {
"key3": "value3",
"key4": 10,
"key5": true
}
}
我們先定義一個用來承載配置的類,將其定義爲ConfigModel
class ConfigModel
{
public String key1 { get; set; }
public int key2 { get; set; }
public int key4 { get; set; }
public bool key5 { get; private set; } = false;
}
首先,我們利用文件提供程序類型來加載配置
IConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
configurationBuilder.AddJsonFile("settings.json");
IConfigurationRoot configurationRoot = configurationBuilder.Build();
配置綁定我們通過Bind方法,如下,我們給ConfigModel來賦值初始值,以便與最後的結果做比較
ConfigModel configModel = new ConfigModel() { key1 = "value1new", key2 = 10 ,key4=30};
//可以進行對此綁定,應該還可以綁定到不同的對象。
configurationRoot.Bind(configModel);
我們可以同時將配置綁定到多個對象,比如,我們可能加載了多個配置文件,或者以配置文件的多個Section等來區分,我們可以進行多次綁定
ConfigModel configModel = new ConfigModel() { key1 = "value1new", key2 = 10 ,key4=30};
//可以進行對此綁定,應該還可以綁定到不同的對象。
configurationRoot.Bind(configModel);
//獲取節,並綁定
configurationRoot.GetSection("Section1").Bind(configModel);
//...
私有變量/方法的處理
如上,ConfigModel中的key5的set方法是private的,也就意味着,我們在類外部無法直接調用其set方法,那麼,我們該如何將配置文件中的值賦值到類呢?
這裏,我們需要用到BinderOptions。Bind()帶有第二個參數BinderOptions,可以讓我們指定綁定選項。如我們要給key5賦值
configurationRoot.GetSection("Section1").Bind(configModel,options=> { options.BindNonPublicProperties = true; });
這裏options.BindNonPublicProperties = true代表我們允許綁定私有屬性。
這樣我們就可以獲取到私有變量的值了。
其實,在實際的開發過程中,我們一般都會用類來承載我們的配置,因爲這樣,不僅可以更直觀的瞭解配置,而且便於對配置進行管理。下面一節,學習如何低成本實現自定義的配置源。
源碼可訪問
https://github.com/IronMarmot/Samples/tree/master/CoreSamples
更多課程詳細內容,可識別下方二維碼購買。
【掃描二維碼購買課程,可後臺留言獲得10元紅包返現。】
部分內容來源於網絡,侵刪。
更多精彩內容,請微信搜索攻城獅客棧 或掃描下方二維碼
------------------------------------------------------------------------------
公衆號:攻城獅客棧
CSDN:畫雞蛋的不止達芬奇
讓我們一起變的更優秀。