0

コレクションを宣言しました:

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

4

0 に答える 0