天天看點

DotNetCore跨平台~在appsettings.json裡自定義配置項

DotNetCore裡一切都是依賴注入的,對于appsettings這個可擴充的配置對象也不例外,它位于項目根目錄,一般在startup裡去注冊它,在類中通過構造方法注入來擷取目前的對象,以便去使用它,當然我們也可以自己去建構和使用它,下面我就來總結一下。

1 注意配置類

2 在appsettings裡添加它的内容

3 在控制器裡使用它,當然你可以在基類中定義它的使用方式,但注入的入口還是在構造方法上

這時,你的AppConfiguration在被加載後,就有值了,是在程式運作時被注入進來的!

appsetting的内容不變,隻是在屬性中去封裝了配置注入與擷取的過程,注意,為了考慮性能,你可以把它的建立和擷取做成單例,這點我就不設計了!

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<code>public</code> <code>RedisConfiguration AppConfigurations</code>

<code> </code><code>{</code>

<code>     </code><code>get</code>

<code>     </code><code>{</code>

<code>         </code><code>var</code> <code>config = </code><code>new</code> <code>ConfigurationBuilder()</code>

<code>                      </code><code>.AddInMemoryCollection()</code>

<code>                      </code><code>.SetBasePath(Directory.GetCurrentDirectory())</code>

<code>                      </code><code>.AddJsonFile(</code><code>"appsettings.json"</code><code>, optional: </code><code>true</code><code>, reloadOnChange: </code><code>true</code><code>)</code>

<code>                      </code><code>.Build();</code>

<code>         </code><code>var</code> <code>sp = </code><code>new</code> <code>ServiceCollection().AddOptions().Configure&lt;RedisConfiguration&gt;(</code>

<code>                  </code><code>config.GetSection(</code><code>"RedisConfiguration"</code><code>)).BuildServiceProvider();</code>

<code>         </code><code>var</code> <code>_appConfiguration = sp.GetService&lt;IOptions&lt;RedisConfiguration&gt;&gt;();</code>

<code>         </code><code>return</code> <code>_appConfiguration.Value;</code>

<code>     </code><code>}</code>

<code> </code><code>}</code>

 在控制器上,可以直接使用它了,我這個屬性是做在所有控制器的父類上的。

感謝各位的閱讀!

對于.net core的研究我們還在繼續,希望core2.0,standard2.0不會讓我們失望!

聽說它已經實作了.net frameworks 4.6.1所有的功能!