2017-06-26 3 views
0

Ecriture d'un exemple d'application contenant une liste d'éléments, puis lorsque l'utilisateur clique sur un élément. Il utilise ShowViewModel pour afficher une page détaillée sur l'élément. Cependant, lorsque l'appel méthode qui appelle ShowViewModel il se bloque avec l'erreur suivante: « Impossible de résoudre le type de jeton 01000037 (de typeref, classe/assemblage MvvmCross.Core.ViewModels.MvxRequestedBy ... »Obtention d'une erreur lors de l'appel ShowViewModel

Le code pour l'exemple d'application est ici: https://github.com/gregmercer/FruitsAndVeggies

le message d'erreur complet est ici: https://github.com/gregmercer/FruitsAndVeggies/blob/master/error.txt

Et la ligne qui provoque l'erreur (quand décommentée) se trouve ici: https://github.com/gregmercer/FruitsAndVeggies/blob/master/FruitsAndVeggies.Core/ViewModels/FruitsViewModel.cs#L58

Répondre

2

Le problème est que vous mélangez les versions MvvmCross.

Donc, si vous regardez votre packages.config pour votre coeur:

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="MvvmCross" version="4.4.0" targetFramework="portable45-net45+win8+wpa81" /> 
    <package id="MvvmCross.Binding" version="4.4.0" targetFramework="portable45-net45+win8+wpa81" /> 
    <package id="MvvmCross.Core" version="4.4.0" targetFramework="portable45-net45+win8+wpa81" /> 
    <package id="MvvmCross.Platform" version="4.4.0" targetFramework="portable45-net45+win8+wpa81" /> 
</packages> 

Ce sont la version 4.4.0

Ensuite, si nous regardons le projet Droid:

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="MvvmCross" version="5.0.2" targetFramework="monoandroid70" /> 
    <package id="MvvmCross.Binding" version="5.0.2" targetFramework="monoandroid70" /> 
    <package id="MvvmCross.Core" version="5.0.2" targetFramework="monoandroid70" /> 
    <package id="MvvmCross.Droid.Shared" version="5.0.2" targetFramework="monoandroid70" /> 
    <package id="MvvmCross.Droid.Support.Core.UI" version="5.0.2" targetFramework="monoandroid70" /> 
    <package id="MvvmCross.Droid.Support.Fragment" version="5.0.2" targetFramework="monoandroid70" /> 
    <package id="MvvmCross.Droid.Support.V7.AppCompat" version="5.0.2" targetFramework="monoandroid70" /> 
    <package id="MvvmCross.Droid.Support.V7.RecyclerView" version="5.0.2" targetFramework="monoandroid70" /> 
    <package id="MvvmCross.Platform" version="5.0.2" targetFramework="monoandroid70" /> 
    <package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="25.3.1" targetFramework="monoandroid70" /> 
    <package id="Xamarin.Android.Support.Annotations" version="25.3.1" targetFramework="monoandroid70" /> 
    <package id="Xamarin.Android.Support.Compat" version="25.3.1" targetFramework="monoandroid70" /> 
    <package id="Xamarin.Android.Support.Core.UI" version="25.3.1" targetFramework="monoandroid70" /> 
    <package id="Xamarin.Android.Support.Core.Utils" version="25.3.1" targetFramework="monoandroid70" /> 
    <package id="Xamarin.Android.Support.Design" version="25.3.1" targetFramework="monoandroid70" /> 
    <package id="Xamarin.Android.Support.Fragment" version="25.3.1" targetFramework="monoandroid70" /> 
    <package id="Xamarin.Android.Support.Media.Compat" version="25.3.1" targetFramework="monoandroid70" /> 
    <package id="Xamarin.Android.Support.Transition" version="25.3.1" targetFramework="monoandroid70" /> 
    <package id="Xamarin.Android.Support.v7.AppCompat" version="25.3.1" targetFramework="monoandroid70" /> 
    <package id="Xamarin.Android.Support.v7.RecyclerView" version="25.3.1" targetFramework="monoandroid70" /> 
    <package id="Xamarin.Android.Support.Vector.Drawable" version="25.3.1" targetFramework="monoandroid70" /> 
    <package id="Xamarin.Build.Download" version="0.4.3" targetFramework="monoandroid70" /> 
</packages> 

Ce sont la version 5.0.2, qui est plus récente que 4.4.0. Consolidez vos packages et utilisez les mêmes versions pour tous vos projets.

+0

Changement à tous utiliser la version 5.0.2 travaillé. Merci beaucoup pour votre aide. –

-1

Pour transmettre des paramètres, vous devez soit hériter d'un MvxViewModel< Parameters> générique, soit mettre à jour MvvmCross 5.0, ce qui améliore la prise en charge du transfert d'objets sans problème.

Regardez cet exemple comme référence: https://github.com/MvvmCross/MvvmCross/tree/develop/TestProjects/Navigation

+0

Les paramètres sont supportés dans 'ShowViewModel' en utilisant des génériques ou non. Ce n'est clairement pas la réponse. – Cheesebaron

+0

Les paramètres utilisant un objet ne sont pas pris en charge si vous ne définissez pas le type générique. Si c'est un type primitif, vous pouvez, mais ce n'est pas le cas. – Martijn00

+0

Ils sont supportés. Ne soyez pas stupide Martijn – Cheesebaron