Как создать экземпляр класса и внедрить зависимости, не регистрируя его в DryIo c? - PullRequest
1 голос
/ 23 марта 2020

Мне нужно создать экземпляр класса с некоторыми параметрами без регистрации его в контейнере , так как мне часто нужно получить некоторые классы с зависимостями, введенными без их загромождения в контейнере.

Вот пример:

interface IPrinter
{
    void Print(string text);
}
class ConsolePrinter : IPrinter
{
    public void Print(string text) => Console.WriteLine(text);
}
class Thing
{
    public Thing(IPrinter print, string otherParameter)
    {
        // ...
    }
}
class Program
{
    static void Main(string[] args)
    {
        var container = new Container();

        container.Register<IPrinter, ConsolePrinter>();

        // This throws.
        container.Resolve<Thing>(args: new object[] { "something something" });
    }
}

Я получаю исключение: DryIoc.ContainerException: 'code: UnableToResolveUnknownService, что имеет смысл.

Я точно могу сделать container.Register<Thing>(), но, как уже было сказано, добавил бы нежелательный сервис в мой контейнер.

1 Ответ

1 голос
/ 24 марта 2020

Вы можете попытаться установить WithConcreteTypeDynamicRegistrations правила для контейнера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...