2012-04-19 3 views
4

J'ai créé une application en utilisant MVVMCross, les versions IOS et Android fonctionnent mais quand j'ai essayé de "porter" WP7 et j'ai couru dans le problème suivant:methodAccessException lors du passage de variables de ViewModel à ViewModel sur WP7 en utilisant un objet anonyme (MVVMCross)

throw methodAccessException.MvxWrap("Problem accessing object - most likely this is caused by an anonymous object being generated as Internal - please see http://stackoverflow.com/questions/8273399/anonymous-types-and-get-accessors-on-wp7-1"); 

Comme mentionné dans la réponse à mon autre question à ce sujet (sur Android), vous devez définir un attribut InternalsVisibleTo dans les AssemblyInfo.cs pour WP7. Donc j'ai fait:

[assembly: InternalsVisibleTo("Cirrious.MvvmCross.WindowsPhone")] 

Mais cela ne fait aucune différence. J'utilise le code suivant pour envoyer deux variables de mon BeckhoffViewModel à mon BeckhoffSensorViewModel.

BeckhoffViewModel:

public IMvxCommand BeckhoffSensor1 
{ 
get 
    { 
     return new MvxRelayCommand(kvpSens1); 
    } 
} 

private void kvpSens1() 
{ 
    RequestNavigate<BeckhoffSensorViewModel>(new { VarType = "short", Variable = ".countertest" }); 
} 

BeckhoffSensorViewModel:

public BeckhoffSensorViewModel(string VarType, string Variable) 
{ 
    _vartype = VarType; 
    _variable = Variable; 
} 

Tout ce que je donne sur? J'ai également regardé l'autre sujet de stackoverflow mentionné dans l'exception mais je ne pouvais pas vraiment le comprendre.

Répondre

3

La classe anonyme sera très certainement être créé internal par le compilateur - ce qui est la raison pour laquelle vous avez besoin de la ligne [assembly: InternalsVisibleTo("Cirrious.MvvmCross.WindowsPhone")]

Pouvez-vous vérifier que les AssemblyInfo.cs certainement être liés déposer des dans le projet (et que cela est le projet contenant le code ViewModel/anonymous-class)?

Si tel est le cas, pouvez-vous vérifier le methodAccessException pour voir quel est le message?

Si cela ne vous aide pas, pouvez-vous utiliser un outil comme Reflector pour vérifier que l'attribut internalVisible est réellement présent sur l'assemblage core/application?

+1

Je suppose que je n'étais pas complètement réveillé ce matin. J'ai ajouté l'attribut au fichier AssemblyInfo.cs dans l'interface utilisateur à la place du Core (/ Library). Après avoir corrigé cette erreur, cela fonctionne très bien! – David

+0

Je l'ai déjà fait :) – Stuart

Questions connexes