Как зарегистрировать универсальный класс в AutoFac, который требует параметров? - PullRequest
0 голосов
/ 07 февраля 2019

AutoFac позволяет регистрировать универсальные классы с помощью builder.RegisterGeneric(Type type), однако он не принимает параметры для построения.В описании метода даже сказано:

Зарегистрируйте непараметризованный тип geenric

Однако, что если у меня есть универсальный интерфейс IService, реализованный Service, который требует некоторогопараметры?

В настоящее время я зарегистрировал это так:

builder.Register(c =>
    new Service<Class1>(
        parameter1,
        parameter2))
    .As<IService<Class1>>();

При регистрации я должен указать точный тип T (Class1 в данном случае).Могу ли я сделать это более обобщенно, чтобы у меня была одна регистрация для любого T?

1 Ответ

0 голосов
/ 07 февраля 2019

Здесь все задокументировано: https://autofaccn.readthedocs.io/en/latest/register/parameters.html

По сути, вы можете продолжать использовать RegisterGeneric и использовать WithParameter

builder.RegisterGeneric(typeof(Service<>))
       .WithParameter("nameOfParam1", parameter1)
       .WithParameter("nameOfParam2", parameter2)
       .As(typeof(IService<>));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...