我有一个场景,我想从自定义数据存储中读取控制容器(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
}
}
那是最好的方法来做我想要做的事情?其他建议?