Bref historique:MEF: Pièces de chargement (plug-ins) qui ont des propriétés différentes
Mon équipe (MEF) a décidé d'utiliser Framework de Microsoft Managed Extensibility afin de fournir un modèle extensible pour ajouter de nouveaux "fournisseurs" dans notre système.
Cela nous permet de brancher de nouveaux fournisseurs tiers avec une relative facilité.
Note: J'ai été impressionné par la facilité d'utilisation et d'utilisation de MEF.
Ma question:
Étant donné que ces fournisseurs ont souvent des propriétés différentes qui leur sont associés, lors du chargement de ces fournisseurs dans le système lors de l'exécution, nous avons besoin d'accéder aux fournisseurs des flux de données et les propriétés.
Quelle approche devrait-on adopter pour travailler avec les plug-ins du fournisseur en raison des propriétés différentes? Notant qu'ils font tous un travail similaire.
Ma solution:
Créer une interface que les fournisseurs doivent se conformer à, entraînant une « enveloppe » en cours de création autour de chacun des fournisseurs 3ème partie résultant dans un modèle de programmation d'interface cohérente/ pour travailler avec chaque fournisseur. Plug-in = source de données tierce (fournisseur) + Implémentation d'interface commune.
+ ve: Pas besoin d'un "plug" dynamique à base de réflexion plus complexe pour lesdits plug-ins.
-ve: Avoir à écrire un wrapper pour chaque fournisseur. (Nous devons ajouter les balises d'exportation MEF, quel que soit)
De plus Note:
Pour moi serait le plus simple, mais on me dit l'approche d'interface/wrapper pour enquêter sur une approche basée sur la réflexion qui peut utiliser la réflexion afin de découvrir les propriétés à l'exécution qui peuvent être exposées au système. Je ne suis pas en faveur d'une solution par rapport à une autre, mais je serais intéressé à entendre les pensées de la communauté (dont la plupart sont plus expérimentés que moi).
Merci.
ajout mineur, la classe RuleAttribute devrait également être marqué: [AttributeUsage (AllowMultiple = false)] –
Mise à jour, merci Nick! Je dois aimer cette fonctionnalité pour StackOverflow qui vous permet de modifier ;-) –