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
Nevermind les gars ... j'avais oublié d'ajouter une référence à ma DLL ViewModel ... aussi simple que ça ... :( – Tony