依赖注入之IConfiguration

  public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
//下面这行就是注入 services.Configure
<AppSettings>(Configuration.GetSection("AppSettings"));//这里是添加的,其余的都是新建项目带的
//AppSettings这个类是新增的,里面的字段,对应appsettings.json中的字段

//链接字符串的
var conn = Configuration.GetSection("ConnectionStrings");
          string efconn = conn["acc_miniehub"];
//映射的实体类的ConnectionString 属性
 OMSECData.Acc_OmsContext.ConnectionString = efconn;
            services.AddDbContext<OMSECData.Acc_OmsContext>
            (
                options => options.UseSqlServer(efconn)
            );


}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseMvc(); } }

应用:这样就ok了。appsetting.json就是配置文件,把什么链接字符串了什么都是放在这里的。

 

 链接数据库:

 

用法和前面的一样,先声明再注入

 

IConfiguration 是用来加载配置值的,可以加载内存键值对、JSON或XML配置文件,我们通常用来加载缺省的appsettings.json 

1. 注入IConfiguration

执行到Startup的时候,IConfiguration已经被注入到services了,不需要我们额外添加注入的代码,缺省就是读取appsettings.json文件,你可以理解在Startup.cs里有隐藏的注入代码类似如下:

var builder = new ConfigurationBuilder()
               .SetBasePath(env.ContentRootPath)
               .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
               .AddEnvironmentVariables();
Configuration = builder.Build();
services.AddSingleton<IConfiguration>(Configuration);

 

SP.NET Core 包含了一个默认支持构造函数注入的简单内置容器(由 IServiceProvider 接口表示),并且 ASP.NET 使某些服务可以通过 DI 获取。

ASP.NET 的容器指的是它管理的类型为 services。在这篇文章的其余部分, services 是指由 ASP.NET Core 的 IoC 容器管理的类型

你在应用程序 Startup 类的 ConfigureServices 方法中配置内置容器的服务

 

注册你自己的服务

你可以按照如下方式注册你自己的应用程序服务。第一个泛型类型表示将要从容器中请求的类型(通常是一个接口)。第二个泛型类型表示将由容器实例化并且用于完成这些请求的具体类型。

services.AddTransient<IEmailSender, AuthMessageSender>();
services.AddTransient<ISmsSender, AuthMessageSender>();

注解
每个 services.Add<service> 调用添加(和可能配置)服务。 例如: services.AddMvc() 添加 MVC 需要的服务。

例如: 

 services.AddTransient<MQ.ISOService, MQ.SOService>();
namespace ECBackend.MQ
{
    interface ISOService
    {
        Task<int> PostOrderToWMS(string data);
        Task<int> SOConfirm(string data);
    }
    public class SOService : ISOService, ICapSubscribe
    {
        private readonly IOptions<AppSettings> _Setting;
        private readonly IHttpClientFactory _httpClientFactory;
        private readonly ICapPublisher _publisher;
        private readonly Acc_OmsContext _db;

        public SOService(IOptions<AppSettings> Setting,IHttpClientFactory httpClientFactory,ICapPublisher p,Acc_OmsContext db)
        {
            _Setting = Setting;
            _httpClientFactory = httpClientFactory;
            _db = db;
            _publisher = p;
        }
[CapSubscribe(
"abc")] public async Task<string> GeneratePaperInvoice(string data) { string s = ""; try { var ary = data.Split(','); Guid Pk_guid = new Guid(ary[0]); string whse = ary[1]; string fplxdm = ary[2]; var obj = new SO(Pk_guid, whse, _Setting, _httpClientFactory.CreateClient(), _publisher); s = await obj.SSTInvoice(fplxdm); } catch (Exception ex) { s = ex.Message; } return s; } }

 

转载于:https://www.cnblogs.com/ZkbFighting/p/11248798.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值