条件绑定AutoFac

本文关键字:AutoFac 绑定 条件 | 更新日期: 2023-09-27 17:58:29

我有一个名为wrapper的包装类,它的接口IWrapper,当我的包装类在我的一个控制器中创建时,我希望它使用一种输入参数创建包装类,否则使用其他一些输入参数。

我的代码看起来像这样:

public Wrapper(string uri)
{
    base.BaseAddress = new Uri(uri);
}

我想要实现的是,我的Wrapper类中的Uri参数注入了不同的值,这取决于它将从哪个控制器注入。

我正在使用AutoFac 2与WebApi集成。

条件绑定AutoFac

我通过这样做解决了它:

builder.RegisterType<Wrapper>().As<IWrapper>().WithParameter(new NamedParameter("uri", "http://test.com")).InstancePerApiRequest();
builder.Register(x => new RestClientWrapper("https://auth.test.com/")).Named<IWrapper>("auth");
builder.Register(x => new AuthController(x.ResolveNamed<IRestClientWrapper>("auth")));

你可以在这里阅读更多关于它的信息:https://code.google.com/p/autofac/wiki/TypedNamedAndKeyedServices