Внедрить NamedOptions в сборки в базовом проекте asp. net? - PullRequest
0 голосов
/ 21 января 2020

Я настроил NamedOption в ConfigureServices метод Startup.cs, как показано ниже:

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, я хочу, чтобы MyOpts объект вводился в CreateUserCommand(IOptionsSnapshot<MyOpts> opts). CreateUserCommand находится в сборке, отличной от asp. net основного проекта. Можно ли добиться такого поведения?

Ответы [ 2 ]

1 голос
/ 21 января 2020

Если вы также регистрируете команды в DI, тогда да (вы обычно не регистрируете команды в DI), но на основании того, что я вижу, CreateUserCommand является полезной нагрузкой (в вашем случае), поэтому я предполагаю, что вы не регистрируете ее, а она не будет работать (не только в разных сборках, но и в одних и тех же сборках). Поскольку вы используете Mediator, я предполагаю, что у вас есть обработчик для CreateUserCommand, и я думаю, что вы можете внедрить свою конфигурацию, и она будет работать.

0 голосов
/ 21 января 2020

Да, по умолчанию ASP. NET Core DI поддерживает правильную инжекцию в несколько сборок, если все сделано правильно.

Пожалуйста, обратитесь к хорошей статье для более подробной информации.

https://asp.net-hacker.rocks/2017/03/06/using-dependency-injection-in-multiple-projects.html

Надеюсь, это поможет!

...