Я пытаюсь найти правильный способ ввести авто-фабрику, которая принимает параметры, или даже если это возможно с Unity.
Например, я знаю, что могу сделать это:
public class TestLog
{
private Func<ILog> logFactory;
public TestLog(Func<ILog> logFactory)
{
this.logFactory = logFactory;
}
public ILog CreateLog()
{
return logFactory();
}
}
Container.RegisterType<ILog, Log>();
TestLog test = Container.Resolve<TestLog>();
ILog log = test.CreateLog();
Теперь я хотел бы иметь возможность:
public class TestLog
{
private Func<string, ILog> logFactory;
public TestLog(Func<string, ILog> logFactory)
{
this.logFactory = logFactory;
}
public ILog CreateLog(string name)
{
return logFactory(name);
}
}
Container.RegisterType<ILog, Log>();
TestLog test = Container.Resolve<TestLog>();
ILog log = test.CreateLog("Test Name");
К сожалению, это не такт работа.Я вижу, как вы можете настроить пользовательские фабрики для создания экземпляров в Unity, но не могу найти каких-либо четких примеров для этого примера.
Очевидно, Я мог бы создать свою собственную фабрику, ноЯ ищу элегантный способ сделать это в Unity и с минимальным кодом.