【发布时间】:2013-08-29 10:37:27
【问题描述】:
考虑一下这个用于 webform MVP 风格应用程序的 autofac 注册模块,我通过提供一些参数依赖来注册几个组件。
public class SampleModule : Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterType<FooService>().As<IFooService>();
builder.Register<FooPresenter>((c, p) =>
new FooPresenter(p.Named<IFooView>("view"),
c.Resolve<IFooService>(p),
p.Named<string>("connectionString")))
.InstancePerHttpRequest();
base.Load(builder);
}
}
在页面中,我可以使用如下代码解析类型:
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
var cpa = (IContainerProviderAccessor) HttpContext.Current.ApplicationInstance;
var cp = cpa.ContainerProvider;
// Resolve presenter
var presenter = cp.RequestLifetime.Resolve<FooPresenter>(
new NamedParameter[]
{
new NamedParameter("connectionString", "xyz"),
new NamedParameter("view", this)
});
}
但我真的很想使用属性注入并在该级别管理对参数的依赖;例如这样的事情:
public FooPresenter Presenter { get; set; }
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
var cpa = (IContainerProviderAccessor) HttpContext.Current.ApplicationInstance;
var cp = cpa.ContainerProvider;
// Parameters bindings?
cp.RequestLifetime.InjectProperties(this);
}
我可以在 Autofac 上利用什么?提前致谢。
【问题讨论】:
标签: dependency-injection autofac