2010-07-07 4 views
0

J'ai deux assemblages silverlight. Dans l'assemblage 1, j'ai implémenté une interface ISnProvider. Dans l'assemblage 2, j'ai une classe concrète qui implémente le ISnProvider. Je prévois d'avoir plus d'assemblées qui contiendront différentes implémentations de ISnProvider. L'assembly 1 ne fait pas référence à l'assembly 2.Utilisation du conteneur IOC dans Silverlight pour charger dynamiquement l'assemblage. Est-ce possible?

Lorsque mon application Silverlight démarre, je souhaite résoudre l'interface ISnProvider à l'aide d'un conteneur IOC. Idéalement, je n'aurai pas à recompiler mon application pour utiliser différents fournisseurs. Je ne veux pas coder en dur 'assembly2.dll' dans mon assembly 1.

Quel conteneur IOC me permettra de charger dynamiquement ces assemblées en utilisant silverlight?

Merci!

santiago

Répondre

1

Vous pouvez jeter un oeil sur le Managed Extensibility Framework (MEF) de Microsoft. Cela va certainement soutenir votre scénario (example here) bien que cela signifie malheureusement que vous devez utiliser des attributs (par exemple [Importer]/[Exporter]) à différents endroits dans votre code. Je recommanderais certainement cet appareil pour l'utilisation générale d'IOC avec Silverlight, mais je n'ai jamais essayé de le charger dynamiquement sans référence directe et je ne suis pas sûr qu'il le supportera dans Silverlight (I « d aiment entendre si quelqu'un a accompli cela avec Autofac)

Vous pouvez également utiliser une approche semi-manuelle - here's an example de chargement d'un assemblage dynamique dans Silverlight sans un conteneur du CIO, qui peut ou peut ne pas être utile pour toi.

+0

Steve, merci. J'ai lu l'exemple MEF que vous suggérez et cela fonctionnerait certainement et résoudrait mon problème. Je n'avais même pas considéré le MEF pour cela. Je vais essayer! Merci beaucoup! – santiagoIT

+0

Pour toute personne intéressée, j'ai utilisé MEF et j'ai adoré! Fonctionne avec brio! Merci pour la pointe !! – santiagoIT