我有一個場景,我想從自定義數據存儲中讀取控制容器(Castle Windsor)反轉的配置數據。此自定義數據存儲具有類似於表的結構,其中列出了一組(可能定製的)組件,這些組件實現了系統中所需的接口。向IWindsorInstaller實現注入依賴關係
例如,應用程序需要執行IFoo
,但包含該實現的實際程序集和類型在此自定義數據存儲中定義。
我想實施IWindsorInstaller
讀取數據結構並註冊IFoo
正確的實現者。但是,要正確訪問我的自定義數據存儲,我需要訪問工廠類(實現IDataConnectionProvider
接口)。這種類型的註冊在容器中,但我不知道這是否是合理的做一些事情,如:
var container = new WindsorContainer();
container.Register(Component.For<IDataConnectionProvider>.
ImplementedBy<DefaultDataConnectionProvider>.
DependsOn(new { host, service });
container.Install(FromAssembly.This());
然後在裝配類:
public class PluginInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
var dataStoreConnection = container.Resolve<IDataConnectionProvider>();
// read table, register other services
}
}
那是最好的方法來做我想要做的事情?其他建議?