他の投稿からこれを検索しようとしましたが、答えが見つからなかったため、新しい質問を作成しました。
ETLシステムを構築しています。
これで、次のインポートを持つクラスができました。
[Import]
public IDataExtractor DataExtractor { get; set; }
[Import]
public IDataTransformer DataTransformer { get; set; }
[Import]
public IDataValidator DataValidator { get; set; }
[Import]
public IDataPublisher DataPublisher { get; set; }
[Import]
public IDataUpdater DataUpdater { get; set; }
私の program.cs には、構成用の次のコードがあります。
var catalog = new AggregateCatalog();
if (!string.IsNullOrEmpty(ConfigKeys["Extractor"]))
catalog.Catalogs.Add(new DirectoryCatalog(ConfigKeys["Extractor"]));
if (!string.IsNullOrEmpty(ConfigKeys["Transformer"]))
catalog.Catalogs.Add(new DirectoryCatalog(ConfigKeys["Transformer"]));
if (!string.IsNullOrEmpty(ConfigKeys["Validator"]))
catalog.Catalogs.Add(new DirectoryCatalog(ConfigKeys["Validator"]));
if (!string.IsNullOrEmpty(ConfigKeys["Publisher"]))
catalog.Catalogs.Add(new DirectoryCatalog(ConfigKeys["Publisher"]));
if (!string.IsNullOrEmpty(ConfigKeys["Updater"]))
catalog.Catalogs.Add(new DirectoryCatalog(ConfigKeys["Updater"]));
var container = new CompositionContainer(catalog);
container.ComposeParts(this);
ConfigKeys []は私の構成管理システムであり、指定できる場所で、各エクストラクタ、トランスフォーマ、バリデータなどの dll のパスを指定できます。
完全なプロセスは、抽出、変換、検証、公開、更新です。
場合によっては、実行する必要があるのは、抽出、変換、公開の 3 つの機能だけです。したがって、Config システムに Validator dll のパスがない場合、IDataValidator インターフェイスのインスタンスは必要ありません。しかし、空白を指定すると、構成中にエラーが発生します。
エラー: 構成は変更されません。次のエラーのため、変更は拒否されました: 構成で複数の構成エラーが発生し、4 つの根本原因がありました。根本的な原因を以下に示します。詳細については、CompositionException.Errors プロパティを確認してください。「構成で 1 つの構成エラーが発生しました。根本的な原因を以下に示します。詳細については、CompositionException.Errors プロパティを確認してください。\r\n\r\n1) 制約に一致するエクスポートが見つかりませんでした: \n\tContractName\ tCTP.DCU.Models.Interfaces.IDataTransformer\n\tRequiredTypeIdentity\tCTP.DCU.Models.Interfaces.IDataTransformer\r\n"
私の質問は次のとおりです。すべての IMPORT について、EXPORT がない可能性があり、それを適切に処理したいと考えています。MEFでそれを行う方法はありますか?このシナリオをどのように処理できますか? 空のダミースタブを作成して代用しようと思ったのですが、本当にみんなそうなんですか?
ありがとうございました!