2
我目前使用Autofac做簡單的構造函數注入沒有任何問題。但是我想知道的是如何在運行時解決依賴關係。以下示例顯示了我們可以導出文檔的多種方式。通過簡單的構造函數注入,IExport的具體實現可以在運行時解決。然而,需要做的是從構建我的容器後發生的下拉列表中解析用戶選擇中的IExport。有沒有我可以如何實現這個目標的例子?Autofac綁定在運行時
Public interface IExport
{
void Run(string content);
}
public class PDFformat : IExport
{
public void Run(string content)
{
// export in pdf format
}
}
public class HTMLformat : IExport
{
public void Run(string content)
{
// export in html format
}
}
public class RTFformat : IExport
{
public void Run(string content)
{
// export in rtf format
}
}
public class HomeController : Controller
{
IExport Export;
public HomeController(IExport export)
{
Export = export;
}
public void ExportDocument(string content)
{
Export.Run(content);
}
}
對此的任何幫助將不勝感激。
因此,我會在我的控制器中傳遞IExportFactory?當我通過容器在註冊時按照builder.Register( container => new ExportFactory(container)); 我收到以下錯誤 無法從'Autofac.IComponentContext'轉換爲'Autofac.IContainer' –
Cragly
@Cragly:對不起。我不是Autofac專家。您可能需要注入'IComponentContext'(請參閱我的更新)。是的,您需要在'HomeController'中注入'IExportFactory'。 – Steven
謝謝,得到它與以下修改註冊 - > builder.Register( container => new ExportFactory(container.Resolve ())); –
Cragly