2017-07-11 1 views
0

enregistrer ma page de formulaire Xamarin avec conteneur Autofac sur mon App qui hérite PrismApplication för AutofacNavigationService Xamarin avec Prism et Autofact ne peut pas trouver ma navigation

_container.RegisterTypeForNavigation<MasterLayoutPage_View, MasterLayoutPageViewModel>("MasterLayoutPage"); 

Alors je navigue comme ceci:

await NavigationService.NavigateAsync("MasterLayoutPage"); 

Mais il est toujours dit que MasterLayoutPage n'est pas enregistré. Mais quand je vérifie mon conteneur pour les types enregistrés, il est là, entièrement ajouté comme l'enregistrement ci-dessus.

Ai-je manqué quelque chose? Cela a fonctionné avec Unity Je viens de passer à Autofac.

enter image description here

enter image description here

enter image description here

Je trouve ce genre de bizarre et se demander si elle pourrait être un bug ou si NavigationService avec Autofact ne peut pas enregistrer le type que l'unité peut?

+0

Pouvez-vous fournir un exemple reproduisant le problème? C'est le genre de problème où vous avez vraiment besoin de fournir du code pour que quiconque puisse vous donner de l'aide au-delà des devinettes. Cela dit, vous êtes en train de faire la transition avec Unity et n'êtes pas familier avec Autofac. Je vous suggère plutôt d'utiliser DryIoc à la place. –

+0

Je suis pleinement familier avec Autofac utilisé depuis de nombreuses années maintenant ... Mais dans ce cas, son problème avec le service de navigation. Tous les types sont enregistrés comme indiqué dans les images ... Donc, même si le PageNavigationRegistery me montre que ma MasterpageLagout est là (voir la dernière image) et le conteneur (deuxième image) il jette toujours la première exception d'image. Je ne peux pas vous donner plus de code que juste PrismApplication a obtenu le conteneur que j'utilise pour l'enregistrement. Et puis la ligne pour la navigation. Il n'y a plus rien à ajouter ... Utilisation de Nuger de Prism.Autofac – Jnormen

Répondre

0

On dirait que mon problème est que je n'ai pas enregistré les pages dans la méthode override RegisterTypes sur App.xaml.cs J'ai enregistré les types sur la méthode Initialize overridden. Cela a fonctionné avec Unity, je ne sais pas pourquoi ça ne fonctionne pas de la même manière avec autofac quand c'est le même conteneur que j'utilise ... Peut-être que prismApplication pour l'unité a une différence avec PrismApplication pour Autofac, je vais regarder les implémentations deux

+0

La seule différence entre les deux est que votre service est enregistré auprès de ContainerBuilder et que le conteneur est alors mis à jour. Indépendamment du conteneur, vous devez enregistrer les types avant d'essayer de naviguer. –

+0

J'avais tous les types enregistrés avant la navigation, mais j'ai fait l'enregistrement sur Application OnInitialize et ensuite navigué comme dans ma question principale. Tous les types ont été enregistrés bien que je trouve tous les types dans le registre Container and Page avant d'appeler Navigation, mais l'exception null ref ... Mais si j'ai enregistré les pages dans RegisterTypes cela a fonctionné même si la page Inscription et le conteneur me montrent le même résultat avant navigation. Avec Unity, je n'ai eu aucun problème pour enregistrer le niveau OnInitialize des pages. – Jnormen

+0

S'il y a quelque chose que vous voyez travailler avec Unity qui ne fonctionne pas avec Autofac alors s'il vous plaît ouvrir un problème sur GitHub avec un exemple de code pour nous montrer ce que le scénario est exactement. Tks. –