コレクションを宣言しました:
[ImportMany]
IEnumerable<ServiceDivision> ServiceDivisions { get; set; }
DoCompositionの直後に、コンストラクターを呼び出しますInitializeComponent。
private void DoComposition()
{
var divisionCatalog = new DirectoryCatalog(ConfigurationManager.AppSettings[AppSettingsKeys.ServiceDivisionsPath], "*.dll");
var container = new CompositionContainer(divisionCatalog);
container.ComposeParts(this);
}
しかし、これを呼び出した後、ServiceDivisions要素はゼロです。この同じパターンを他の 2 つのプロジェクトで使用しましたが、うまくいきます。ブレークポイントとウォッチにdivisionCatalogは、ロードされた 3 つのファイルと 4 つのパーツがあることがわかります。各部分は次のように宣言されます。
[Export(typeof(ServiceDivision))]
[SectionUIMetadata(MenuText = "System Configuration")]
internal class ConfigDivision : ServiceDivision
{
}
これらのパーツが にインポートされない理由がわかりませんServiceDivisions。それらはカタログにロードされ、正しいタイプです。何が間違っている可能性がありますか?