MEF - Как я могу использовать ExportProvider, чтобы выбрать только один экспорт

Я не знаю любого языка , где подклассы наследуют конструкторы (но тогда я не много программируемый полиглотт).

Здесь обсуждается тот же вопрос относительно C #. Общий консенсус, по-видимому, заключается в том, что он усложнит язык, представит потенциал для неприятных побочных эффектов для изменений в базовом классе и вообще не будет нужен в хорошем дизайне.

1
задан blindmeis 10 August 2010 в 13:30
поделиться

2 ответа

Привет Кент, если вы посмотрите на экспорт, там есть метаданные под названием "ExportType", это должен быть селектор для пользовательского exportprovider. Но после публикации здесь я нашел сообщение в блоге Глена Блока. Так что для моей специальной цели я должен сделать следующее:

var catalog = new AggregateCatalog(); 
catalog.Catalogs.Add(new DirectoryCatalog(AppDomain.CurrentDomain.BaseDirectory)); 
var defaults = new CatalogExportProvider(new TypeCatalog(typeof(Service2))); 
var container = new CompositionContainer(catalog, defaults); 
defaults.SourceProvider = container;

Тем не менее, было бы неплохо узнать, как я могу написать пользовательский exportprovider, который выбирает нужный экспорт из метаданных. Моя проблема в том, как выбрать нужную информацию из ImportDefnition и как я могу установить новый Export(...) в GetExportsCore().

2
ответ дан 2 September 2019 в 22:17
поделиться

В этой статье журнала MSDN объясняется, как получать и использовать метаданные экспорта. По сути, вы используете метод GetExports () в CompositionContainer для получения типов и метаданных, которые затем позволяют вам выбирать тип на основе значений метаданных.

0
ответ дан 2 September 2019 в 22:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: