【发布时间】:2010-09-29 19:45:55
【问题描述】:
我正在尝试找出注入带有参数的自动工厂的正确方法,或者即使使用 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 中使用最少的代码来实现这一点。
【问题讨论】:
标签: c# unity-container