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<RedisConfiguration>(</code>
<code> </code><code>config.GetSection(</code><code>"RedisConfiguration"</code><code>)).BuildServiceProvider();</code>
<code> </code><code>var</code> <code>_appConfiguration = sp.GetService<IOptions<RedisConfiguration>>();</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所有的功能!