Я пытаюсь выяснить правильный способ вставить auto- factory, который принимает параметры, или даже если это возможно с 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, просто не можете финансировать какие-либо четкие примеры для этого примера.
Очевидно, я мог бы создать свой собственный factory, но я ищу элегантный способ сделать это в Unity и с минимальным кодом.