我想找出正确的方法来注入一个自动工厂,它需要参数,或者即使这是可能的统一。统一自动工厂与参数
例如,我知道我能做到这一点:
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中做到这一点,并用最少的代码。
是否有可能做这样的事情,但使用构造函数注入? – dmigo 2015-06-18 14:08:13
@Chesheersky上面的例子使用构造函数注入。 – TheCodeKing 2015-06-18 18:26:14
对,我的错误:) – dmigo 2015-06-21 12:09:39