[英]Injecting NamedOptions across the assemblies in an asp.net core project?
我在Startup.cs
的ConfigureServices
方法中配置了一个NamedOption
,如下所示:
services.Configure<MyOpts>("myOpts",
opts => configuration.Bind("myOpts", opts));
我在asp.net core
api 中有一个控制器操作,如下所示:
public async Task<IActionResult> Insert(CreateUserCommand command)
{
var id = await Mediator.Send(command);
return Ok(id);
}
这是我的CreateUserCommand
:
public class CreateUserCommand
{
private MyOpts opts { get; }
public CreateUserCommand(IOptionsSnapshot<MyOpts> opts)
{
this.opts = opts.Get("myOpts");
}
public long UserId { get; set; }
public string Username { get; set; }
public string FirstName { get; set; }
}
当客户端访问我的 api 时,我希望在CreateUserCommand(IOptionsSnapshot<MyOpts> opts)
中注入MyOpts
对象。 CreateUserCommand 在 asp.net 核心项目以外的程序集中。 是否有可能实现这种行为?
如果您还在 DI 中注册了命令,那么是的(您通常不使用 DI 注册命令),但基于我所看到的 CreateUserCommand 是一个有效负载(在您的情况下)所以我假设您没有注册它并且它不会工作(不仅在不同的程序集中,而且在相同的程序集中)。 因为你使用 Mediator,所以我假设你有一个 CreateUserCommand 的处理程序,我认为你可以在那里注入你的配置并且它会起作用。
是的,如果正确完成,默认的 ASP.NET Core DI 支持跨多个程序集的注入。
有关更多详细信息,请参阅这篇不错的文章。
https://asp.net-hacker.rocks/2017/03/06/using-dependency-injection-in-multiple-projects.html
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.