コレクションを宣言しました:
[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
。それらはカタログにロードされ、正しいタイプです。何が間違っている可能性がありますか?