IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

MEF, instancier plusieurs fois certains plugins


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 22
    Points
    22
    Par défaut MEF, instancier plusieurs fois certains plugins
    Bonjour à tous,

    Je suis en train d'écrire une application qui doit utiliser le principe des plugins.

    J'ai trouvé très intéressant le concept de MEF, mais je me heurte à un petit problème.

    J'ai bien saisi l'utilisation du "ImportMany" sur une propriété de la classe, et j'ai une méthode qui fait un "DirectoryCatalog" puis un "CompositionContainer" qui fait un "ComposeParts(this)".

    Ca m'instancie donc une fois chaque plugin dans la propriété en question.

    Mais ce n'est pas tout à fait ce que je veux, disons que j'ai 3 plugins A, B et C, et j'ai un fichier de conf dans lequel je note les plugins que je veux charger, admettons que je veuille charger A, A, B, C, B, B, C (chaque instance recevra ses propres paramètres pour fonctionner).

    Est-il possible avec MEF d'effectuer cette opération ? (peut être, selon la conf, que C ne sera même jamais instancié)

    Je ne sais pas trop comment faire pour préciser à MEF ce que je veux charger plutôt que de le laisser faire tout en automatique ...

    Merci pour votre aide !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par sierramike Voir le message
    Mais ce n'est pas tout à fait ce que je veux, disons que j'ai 3 plugins A, B et C, et j'ai un fichier de conf dans lequel je note les plugins que je veux charger, admettons que je veuille charger A, A, B, C, B, B, C (chaque instance recevra ses propres paramètres pour fonctionner).

    Est-il possible avec MEF d'effectuer cette opération ? (peut être, selon la conf, que C ne sera même jamais instancié)
    Je pense que ce que tu cherches à faire est possible grâce à la "Sharability" définie dans cette section du docuement MEF traduit en français ici.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 22
    Points
    22
    Par défaut
    Je viens de lire la totalité du document, ça semble effectivement être une piste mais je pense que j'ai du mal à comprendre comment définir "à la main" la liste des types que je veux instancier et pouvoir les ajouter un à un ... D'autant que comme les types se trouvent dans une autre assembly, on ne peut pas les connaitre à l'avance pour les instancier programmatiquement, il y a quelque chose qui m'échappe ...

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 22
    Points
    22
    Par défaut
    Grosso modo, je vais imager un peu le principe :
    Admettons que chaque "Part" soit un "filtre photo", que je veuille appliquer à une photo, je pourrais avoir :
    - FiltreCouleur : prend en paramètre la couleur du filtre
    - FiltreFlou : prend en paramètre la valeur du flou

    Dans mon fichier de conf, j'écris :
    FiltreCouleur(jaune)
    FiltreCouleur(orange)
    FiltreFlou(2)

    Et moi, dans mon "hôte" MEF, j'écris une méthode qui va lire le fichier de conf, et va instancier dans l'ordre :
    Un FiltreCouleur prenant en paramètre "jaune"
    Un FiltreCouleur prenant en paramètre "orange"
    Un FiltreFlou prenant en paramètre "2"

    Comment dois-je utiliser MEF pour arriver à mes fins ?

Discussions similaires

  1. Instancier plusieurs fois un même objet persisté
    Par taupinfada dans le forum Hibernate
    Réponses: 1
    Dernier message: 04/11/2011, 14h18
  2. Réponses: 7
    Dernier message: 21/09/2007, 15h26
  3. Instancier plusieurs fois le même écran?
    Par QAYS dans le forum Delphi
    Réponses: 10
    Dernier message: 04/04/2007, 13h25
  4. [Débutant] [C#] Instancier plusieurs fois un Form.
    Par Dark_Setsuna dans le forum Windows Forms
    Réponses: 2
    Dernier message: 29/03/2007, 13h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo