我有一个ConfigurationReader
类,我正在尝试使用StructureMap或AutoFac连接(我还没有确定我正在使用哪个容器)。
public class ConfigurationReader {
private string _filePath;
public ConfigurationReader(string filePath){
this._filePath = filePath;
}
public IList<Baz> ListStuff(){
//do something with _filePath;
}
}
根据应用程序的配置方式,此类的实例将有1..n(web.config将包含分隔的文件列表)。我在IoC容器中寻找一个扩展点,允许我利用它们来创建ConfigurationReader
的实例。
答案 0 :(得分:1)
好吧,在AutoFac中你只需在容器中注册每一个(例如Application_Start
期间)。
每当您需要阅读所有配置时,您可以向IEnumerable<ConfigurationReader>
添加依赖关系(如果您决定提取界面,则为IConfigurationReader
),它将为您提供所有这些配置。
这样的事情:
var builder = new ContainerBuilder();
foreach(var file in ConfigurationManager.AppSettings[yourKey].Split(','))
{
var fileName = file;
builder.Register(c => new ConfigurationReader(fileName));
}
DependencyResolver.SetResolver(new AutofacDependencyResolver(builder.Build()));
如果您提取界面,那么您可能希望通过在末尾添加.AsImplementedInterfaces()
或.As<IConfigurationReader>()
进行注册。