Моя проблема в том, что после первоначальной композиции я не получаю никакой переоценки изменений при изменении данных, предоставленных для запроса Linq.
По умолчанию MEF будет составлять части только один раз. Когда часть будет составлена, один и тот же экземпляр будет предоставлен для всех импортов. Часть не будет воссоздана, если вы не сделаете это явно.
В вашем случае, если данные детали изменятся, даже если она реализует INotifyPropertyChanged, MEF не создаст новую, и вам все равно это не нужно.
Я реализовал INotifyPropertyChanged в синглтоне, думая, что это слово делает запрос экспортируемого класса для нового IObservable
номер
Может быть, я не понимаю что-то о времени жизни контейнеров MEF или об уведомлении о собственности.
Уведомление о недвижимости позволяет вам реагировать на изменение свойства и не имеет прямого влияния на MEF. Что касается срока службы контейнера, он будет оставаться активным, пока не будет утилизирован. Пока он все еще активен, контейнер будет хранить ссылки на составные части. На самом деле это немного сложнее, так как детали могут иметь разные CreationPolicy, которые влияют на то, как MEF хранит деталь, я отсылаю вас на следующую страницу: Срок службы деталей для получения дополнительной информации.
MEF допускает что-то, называемое Перестановка. Вы можете установить его аналогично:
[Import(AllowRecomposition=true)]
То, что это делает жестко, это позволяет MEF перекомпоновывать детали, когда новые детали доступны или уже недоступны. Насколько я понимаю, это не то, на что вы ссылаетесь в своем вопросе.