Как экспортировать тип MEF, как если бы атрибут экспорта был применен к этому типу?

StackOverflow https://stackoverflow.com/questions/4209603

Вопрос

Я хотел бы динамически применить атрибут экспорта MEF к типу во время выполнения, точно так же, как если бы тип имел атрибут экспорта, применяемый при компиляции.

Есть ли простой способ сделать это?

Запрет, что есть сложный способ сделать это?

Это было полезно?

Решение

Если вы можете позволить себе использовать .NET 4.5 (что означает отбросить поддержку Windows XP), теперь вы можете использовать MEF's Регистрация с атрибутами меньше ака Модель конвенции.

В .NET4 или более раннее предварительный просмотр MEF релизы это не поддерживается из коробки, но MEF все еще может быть расширено, создавая свои собственные реализации ЭкспортПровидер или ComposablePartCatalog.

То MEF вручает власть провайдера определения Это такая реализация, которая позволяет регистрировать импорт и экспорт по вызовам методов.

То MEF вкладывает настраиваемое определениеR - другой, который позволяет настроить импорт и экспорт в файл XML.

Еще один вариант - сделать регистрацию с Автовак а затем использовать его Меф Интеграция Сделать компоненты AUTOFAC доступны для MEF.

Другие советы

Я не намного уверен, но я не думаю, что это можно сделать с MEF. Один шаблон для использования для обеспечения аналогичного поведения, хотя является шаблон завода / провайдера.

interface IData {} 

interface IDataProvider {
  IData Data { get; set; }
}

[Export(IDataProvider)]
class DataProvider : IDataProvider {
  public IData { get; set; }
}

Вы можете использовать этот шаблон для динамического обновления реализации IData к значению, которое вы хотели бы использовать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top