Como exportar um tipo no MEF como se o atributo de exportação tivesse sido aplicado a esse tipo?

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

Pergunta

Gostaria de aplicar dinamicamente o atributo de exportação do MEF a um tipo em tempo de execução, exatamente como se o tipo tivesse um atributo de exportação aplicado no tempo de compilação.

Existe uma maneira simples de fazer isso?

Exceto isso, existe uma maneira complexa de fazer isso?

Foi útil?

Solução

Se você pode usar o .NET 4.5 (o que significa soltar o suporte ao Windows XP), agora você pode usar o MEF's Registro sem atributo aka Modelo de convenção.

No .NET4 ou dos lançamentos de visualização do MEF anteriores, isso não é suportado para fora da caixa, mas o MEF ainda pode ser estendido criando suas próprias implementações de ExportProvider ou ComposablePartCatalog.

o Provedor de definição fluente da MEF é uma implementação que permite registrar importações e exportações por chamadas de método.

o Definição configurável do MEF contribui forneceR é outro que permite configurar as importações e exportações em um arquivo XML.

Outra opção é fazer o registro com Autofac e então use seu Integração do MEF Para disponibilizar os componentes do Autofac para o MEF.

Outras dicas

Não tenho 100% de certeza, mas acho que não é possível fazer com o MEF. Um padrão a ser usado para fornecer comportamento semelhante é o padrão de fábrica / provedor.

interface IData {} 

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

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

Você pode usar esse padrão para atualizar dinamicamente a implementação de IData para o valor que você gostaria de usar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top