Мне нужно создать экземпляр класса с некоторыми параметрами, не регистрируя его в контейнере, так как мне часто нужно получить некоторые классы с внедренными зависимостями, не загромождая контейнер.
Вот пример:
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>()
, но, как было сказано ранее, это добавит нежелательную службу в мой контейнер.
otherParameter
аргументом времени выполнения или он известен (и фиксируется) во время регистрации контейнера? Эта информация необходима для ответа на ваш вопрос. - person Steven   schedule 24.03.2020