Je souhaite utiliser MEF comme DI pour mon projet. J'ai 1 projet et toutes les classes qui devraient être composées y résident (ils partagent une interface). Maintenant, je veux en créer un en spécifiant une valeur de métadonnées. Voici les définitions:MEF GetExportedValue avec les métadonnées
public interface IGatewayResponseReader
{
object Read(string msg);
}
[Export(typeof(IGatewayResponseReader))]
[ExportMetadata(G3Reader.META_KEY, "value1")]
public class TestReader1 : IGatewayResponseReader
{
...
}
[Export(typeof(IGatewayResponseReader))]
[ExportMetadata(G3Reader.META_KEY, "value2")]
public class TestReader2 : IGatewayResponseReader
{
...
}
Maintenant, je veux créer une instance de TestReader1 par MEF, mais je ne sais pas comment filtrer par des métadonnées par CompositionContainer. Je veux quelque chose comme
Container.GetExportedValue<IGatewayResponseReader>();
Mais pour spécifier les métadonnées pour choisir l'instance de classe à créer.
Votre aide est grandement appréciée.
Merci.
Merci Phil, je vous remercie de votre aide :). Merde, j'ai essayé de cette façon et ne fonctionnait pas parce que je ne savais pas sur MetadataAttribute :(J'ai passé 5 heures à essayer de le comprendre. – Davita