2

ConfigurationReaderStructureMapまたは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 では、それぞれをコンテナーに登録するだけです (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>()を追加して登録することもできます。

于 2012-12-16T22:42:31.897 に答える