我有一个场景,需要使用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
实现类被隐藏,因此我无法使用构建器注册它,将实现作为接口返回
答案 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>();