我试图更新我的代码以删除ObjectFactory的用法并只传递IContainer对象,但是我遇到的一个问题是在我的代码中初始化SM,我需要访问容器。例如:
var container = new Container(x =>
{
x.For<IFoo>().Use(() => new Bar(ObjectFactory.GetInstance<IApplicationSettings>().MyConnectionString));
});
无法更新Bar类以注入IApplicationSettings。有什么方法可以在这里替换ObjectFactory的用法吗?
答案 0 :(得分:1)
var container = new Container(x =>
{
x.For<IFoo>().Use(c => new Bar(
c.GetInstance<IApplicationSettings().MyConnectionString));
});
应该有效。
Use
方法有一个带有IContext
lambda的重载,可以用来访问容器。