Consider this autofac registration module for a webform MVP style application, where I register a couple of components by providing some parameters dependency.
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);
}
}
In the page I can resolve the type using some code like this:
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)
});
}
But I would really like to use property injection and manage the dependency on the parameters at that level; Something like this for example:
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);
}
Is there something that I can leverage on Autofac? Thanks in advance.