2010-12-14 82 views
1

Par frustration et plus de 3 jours googler sur ce problème ... je n'ai pas d'autre choix que de vous déranger avec ma question.Silverlight 4, MEF, Export/Import erreurs, Mefx ne veut pas travailler

Je crée une application Silverlight. J'utilise MEF. Quand j'essaye d'exécuter mon application j'obtiens l'erreur suivante.

The invocation of the constructor on type 'IFG.Silverlight.Client.Views.MenuView' that matches the specified binding constraints threw an exception. [Line: 25 Position: 47]

et son exception intérieure est la suivante ...

The composition remains unchanged. The changes were rejected because of the following error(s): The composition produced a single composition error. The root cause is provided below. Review the CompositionException.Errors property for more detailed information.

1) No valid exports were found that match the constraint '((exportDefinition.ContractName == "MenuViewModel") AndAlso (exportDefinition.Metadata.ContainsKey("ExportTypeIdentity") AndAlso "IFG.Silverlight.Client.ViewModel.MenuViewModel".Equals(exportDefinition.Metadata.get_Item("ExportTypeIdentity"))))', invalid exports may have been rejected.

Resulting in: Cannot set import 'IFG.Silverlight.Client.Views.MenuView.ViewModel (ContractName="MenuViewModel")' on part 'IFG.Silverlight.Client.Views.MenuView'. Element: IFG.Silverlight.Client.Views.MenuView.ViewModel (ContractName="MenuViewModel") --> IFG.Silverlight.Client.Views.MenuView

Ok. mon code est très simple puisqu'il s'agit d'une application de test.

j'ai une interface IRetailModel

namespace IFG.Silverlight.Client.Common 
{ 
    public interface IRetailModel 
    { ............ 

alors j'ai une classe qui implémente cette interface

namespace IFG.Silverlight.Client.Model 
{ 
    [Export(typeof(IRetailModel))] 
    public class RetailModel : IRetailModel 
    { ................. 

Puis-je avoir mon ViewModel pour la vue

namespace IFG.Silverlight.Client.ViewModel 
{ 
    [PartCreationPolicy(CreationPolicy.NonShared)] 
    [Export(ViewModelTypes.MenuViewModel)] 
    public class MenuViewModel : IFGViewModelBase 
    { 
IRetailModel _model; 

     [ImportingConstructor] 
     public MenuViewModel(IRetailModel model) 
     { 

Eh bien, je trouvé qu'il y a un outil magique appelé MefX qu'il est censé déboguer profondément à l'os de votre code un nd vous dit ce qui se passe ... Je n'ai pas réussi à faire fonctionner ça.

J'ai suivi les directions de cet article http://blogs.msdn.com/b/nblumhardt/archive/2009/09/24/debug-composition-from-within-visual-studio.aspx

Lorsque je tente de l'exécuter dit

Error: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.

est ensuite retourné à Google et je l'ai trouvé ce visuel MEFX (qui est la même chose, mais avec une interface graphique) et je peux charger le .xap mais fondamentalement il me donne la même information que je reçois de Visual Studio. Je ne peux pas trouver le sacré [PARCE QUE]

Je suis vraiment, HONNÊTEMENT ET PROFONDÉMENT, frustré par cette situation. Quelqu'un peut-il m'expliquer où je n'arrive pas à faire MefX faire son travail? Je connais le risque de gérer ces Overnight Frameworks (manque de documentation, buggy, etc etc) que MEF semble être, mais Prism n'est pas une option pour moi (j'ai envie d'acheter un M16 pour tuer une mouche quand je peux utiliser mon doigt).

Merci

+0

Nevermind les gars ... j'avais oublié d'ajouter une référence à ma DLL ViewModel ... aussi simple que ça ... :( – Tony

Répondre

2

Pour référence ultérieure, une version mise à jour de Visual MEFX est joint à ce billet de blog: How to Debug and Diagnose MEF Failures. Il fait également partie de MEFContrib, bien que je ne sois pas sûr si la version de MEFContrib a toutes les modifications de la version dans le billet de blog.