前提・実現したいこと
2つのインタフェースのフィールドを持つ具象クラスにおいて,そのインタフェースを都度切り替えようと考えています。
下記TextProcessorは,読み込むファイル形式(CSV,TSV)によって,コンストラクタで渡されるProviderとParserの具象クラス(TsvDataProvider, TsvDataParser等)を切り替えたいです。
該当のソースコード
C#
1 public class TextProcessor : ITextProcessor 2 { 3 private readonly IdataProvider DataProvider; 4 private readonly IdataParser DataParser; 5 6 public TextProcessor(IdataProvider dataProvider, IdataParser dataParser) 7 { 8 DataProvider = dataProvider; 9 DataParser = dataParser; 10 } 11 12 public string[] GetRecord() 13 { 14 var text = DataProvider.ReadData(); 15 return DataParser.Parse(text); 16 } 17 } 18}
試したこと
C#
1 var builder = new ContainerBuilder(); 2 builder.RegisterType<TsvDataProvider>().Named<IdataProvider>("Tsv"); 3 builder.RegisterType<TsvDataParser>().Named<IdataParser>("Tsv"); 4 builder.RegisterType<TextProcessor>().Named<ITextProcessor>("Tsv"); 5 builder.RegisterType<CsvDataProvider>().Named<IdataProvider>("Csv"); 6 builder.RegisterType<CsvDataParser>().Named<IdataParser>("Csv"); 7 builder.RegisterType<TextProcessor>().Named<ITextProcessor>("Csv"); 8 bar Container = builder.Build(); 9 10 ... 11 12 var result_1 = container.ResolveNamed<ITextProcessor>("Tsv"); 13 var result_2 = container.ResolveNamed<ITextProcessor>("Csv");
上記実装で"Tsv"と名前の付いたProvider, Parserを持ったTextProcessorインスタンス取得できると考えていたのですが,
DependencyResolutionException例外が発生してしまいます。
上記を実現する方法はありますでしょうか。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/17 16:22