autofac的Func键来解析名为服务
问题描述:
鉴于注册的服务?autofac的Func键<T>来解析名为服务
public class SomeClass(Func<string, IFoo> foo) {
var f = foo("one");
Debug.Assert(f is Foo1);
var g = foo("two");
Debug.Assert(g is Foo2);
var h = foo("three");
Debug.Assert(h is Foo3);
}
我知道我可以用Meta<>
来做,但我不想用它。
答
你可以注册自己的解决委托这样的:
builder.Register<Func<string, IFoo>>(c =>
{
var cc = c.Resolve<IComponentContext>();
return named => cc.ResolveNamed<IFoo>(named);
});
好主意!谢谢 :)。 – ppiotrowicz 2010-05-22 17:34:26
小编辑 - 'c'参数是临时的;如果你想像这样挂住它,你需要解析IComponentContext。 c => {var cc = c.Resolve(); return named => cc.Resolve (named); } –
2010-05-28 22:44:02
@尼古拉斯:啊,当然,这太容易忽略:) – 2010-05-28 23:57:11