2016-05-27 116 views
0

我有一個場景,需要使用autofac注入第三方庫的實例。庫不公開實現類,而是給工廠提供實例。使用autofac注入屬性或構造函數的實現

示例代碼

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

IContext是第三方IIb的一部分,應使用與Autofac context = Configuration.Factory.GetContext();進行初始化。理想情況下,我可以調用這個函數在DBConnection構造,但IContext是單身,所以更好地得到由DI容器IContext實現類隱藏起來使用創建工具我不能註冊注入,返回實現作爲接口

回答

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>();