使用Autofac 2和命名注册构造函数注入

Tha*_*had 1 c# autofac

我目前正在尝试在代码中删除一些.Resolve.我一直在移动,直到我遇到一个命名注册,我无法使用该名称解析Autofac.我错过了将命名注册注入构造函数.

注册

builder.RegisterType<CentralDataSessionFactory>().Named<IDataSessionFactory>("central").SingleInstance();
builder.RegisterType<ClientDataSessionFactory>().Named<IDataSessionFactory>("client").SingleInstance();
builder.RegisterType<CentralUnitOfWork>().As<ICentralUnitOfWork>().InstancePerDependency();
builder.RegisterType<ClientUnitOfWork>().As<IClientUnitOfWork>().InstancePerDependency();
Run Code Online (Sandbox Code Playgroud)

现在的课程

public class CentralUnitOfWork : UnitOfWork, ICentralUnitOfWork
{
    protected override ISession CreateSession()
    {
        return IoCHelper.Resolve<IDataSessionFactory>("central").CreateSession();
    }
}
Run Code Online (Sandbox Code Playgroud)

想拥有

public class CentralUnitOfWork : UnitOfWork, ICentralUnitOfWork
{
    private readonly IDataSessionFactory _factory;
    public CentralUnitOfWork(IDataSessionFactory factory)
    {
        _factory = factory;
    }

    protected override ISession CreateSession()
    {
        return _factory.CreateSession();
    }
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*old 7

更改注册以手动执行解析:

builder.Register(c => new CentralUnitOfWork(c.Resolve<IDataSessionFactory>("central")))
   .As<ICentralUnitOfWork>()
   .InstancePerDependency();
Run Code Online (Sandbox Code Playgroud)