我已经宣布收藏:
[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
它的元素为零。我在另外两个项目中使用了相同的模式并且它有效。断点和手表告诉我divisionCatalog
有 3 个加载的文件和 4 个部分。每个部分的声明很像:
[Export(typeof(ServiceDivision))]
[SectionUIMetadata(MenuText = "System Configuration")]
internal class ConfigDivision : ServiceDivision
{
}
我不明白为什么这些部分没有被导入ServiceDivisions
;它们已加载到目录中,并且它们的类型正确。有什么问题?