2

我有一个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.

4

1 回答 1

1

好吧,在 AutoFac 中,您只需在 Container 中注册每一个(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()or来注册。.As<IConfigurationReader>()

于 2012-12-16T22:42:31.897 回答