代码之家  ›  专栏  ›  技术社区  ›  Callum Linington

AspNet核心作用域依赖接口分离

  •  2
  • Callum Linington  · 技术社区  · 7 年前

    所以,

    // this doesn't work or make sense
    services.AddScoped<IReadSomething>(sp => new Something());
    services.AddScoped<IWriteSomething>(sp => new Something());
    

    IReadSomething IWriteSomething ,这个班只是 Something .

    它们需要确定作用域,因为它们从 HttpContext 与任意框架无关的“DTO”。

    它们都应该引用同一个 我的资产 读取数据,这样我们就可以减少意外的数据覆盖。

    正在做,

    services.AddScoped<IReadSomething, Something>();
    services.AddScoped<IWriteSomething, Something>();
    

    也没有意义,因为它应该为每个接口创建一个新实例。

    要让接口隔离和范围依赖解析一起工作,我缺少什么?我觉得我必须担心ASP.NET核心服务工厂还是什么?

    我还使用structuremap来解决我的主要依赖关系-所以使用它的答案是好的。

    1 回复  |  直到 6 年前
        1
  •  10
  •   Nkosi    7 年前

    services.AddScoped<Something>();
    services.AddScoped<IReadSomething>(sp => sp.GetService<Something>());
    services.AddScoped<IWriteSomething>(sp => sp.GetService<Something>());
    

    这样,对任一接口的调用都将在作用域中返回相同的实例