使用autofac将实现注入属性或构造函数

时间:2016-05-27 06:02:21

标签: c# autofac

我有一个场景,需要使用autofac注入第三方库的实例。库不公开实现类,而是让工厂获取实例。

示例代码

public class DBConnection
{
     public IContext context { get; set; }
     public string GetConnection()
     {
         return context.GetConfiguration("connectionString");
     }
}

IContext是第三方lib的一部分,应使用带context = Configuration.Factory.GetContext();的Autofac进行初始化。理想情况下,我可以在DBConnection构造函数中调用此函数,但IContext是单例,因此更好地被DI容器注入IContext实现类被隐藏,因此我无法使用构建器注册它,将实现作为接口返回

1 个答案:

答案 0 :(得分:0)

您可以将IContext添加为DbConnection

的依赖项
public class DBConnection
{

    public DbConnection(IContext context)
    {
        this.Context = context; 
    }

    public IContext Context { get; }
    public String GetConnection()
    {
       return this.Context.GetConfiguration("connectionString");
    }
}

然后,您可以像这样注册IContext

builder.Register(c => Configuration.Factory.GetContext()).As<IContext>();