Питер Л., вероятно, получил самый простой вариант.
Чтобы обойти проблему в целом, можете ли вы изменить способ обнаружения компонентов для их фильтрации перед регистрацией? Похоже, что должен быть подход, который решает эту проблему ... Кроме того, может быть сложной задачей в дальнейшем выяснить, какие компоненты сохранить, а какие удалить.
Более сложный подход - переопределить поддержку IEnumerable
, чтобы отфильтровать то, что вам не нужно. То есть скопируйте и измените этот код, чтобы создать FilteredCollectionSource
, исключающий ненужные компоненты.
var elements = c.ComponentRegistry.RegistrationsFor(elementTypeService);
станет:
var elements = c.ComponentRegistry.RegistrationsFor(elementTypeService)
.Where(reg => /* not a duplicate */);
Если вы добавите свой FilteredCollectionSource
в конструктор, используя RegisterSource()
, он будет использоваться вместо встроенного.