Comment utiliser Ninject en application WPF
Je suis familier avec MVC, mais j'essaie d'apprendre à WPF avec Ninject. Peut quelqu'un me donner quelques exemple ou de référence?
Avez-vous regardé le Ninject documentation sur leur site et GitHub?
je suis déjà en train de regarder leur site. mais toujours pas à comprendre.. désolé pour perdre votre temps
C'est très bien, mais à affiner votre question à quelque chose de plus spécifique. De quoi êtes-vous d'avoir des problèmes avec, et ce que vous avez essayé jusqu'à présent?
je veux juste savoir, comment puis-je la liaison interface de service avec ninject en wpf et où le fichier se trouve, merci
je ne pense pas que cela a quelque chose à faire avec WPF, sauf dans le cas où vous souhaitez instancier Viewmodel à l'aide de ninject. L'une des choses la première page(s) de ninject doc sauter sont l'instanciation d'un Noyau: `var kernel = new StandardKernel(); noyau.Bind<IFoo>().≪Foo>(); noyau.Obtenir des<IFoo>();" <-- c'est le noyau instanciation, de liaison, et instanciating en un petit exemple.
je suis déjà en train de regarder leur site. mais toujours pas à comprendre.. désolé pour perdre votre temps
C'est très bien, mais à affiner votre question à quelque chose de plus spécifique. De quoi êtes-vous d'avoir des problèmes avec, et ce que vous avez essayé jusqu'à présent?
je veux juste savoir, comment puis-je la liaison interface de service avec ninject en wpf et où le fichier se trouve, merci
je ne pense pas que cela a quelque chose à faire avec WPF, sauf dans le cas où vous souhaitez instancier Viewmodel à l'aide de ninject. L'une des choses la première page(s) de ninject doc sauter sont l'instanciation d'un Noyau: `var kernel = new StandardKernel(); noyau.Bind<IFoo>().≪Foo>(); noyau.Obtenir des<IFoo>();" <-- c'est le noyau instanciation, de liaison, et instanciating en un petit exemple.
OriginalL'auteur novian kristianto | 2013-12-16
Vous devez vous connecter pour publier un commentaire.
Comme je l'ai dit dans mon commentaire à votre opération, toutes les informations dont vous avez besoin est disponible dans le Ninject documentation. Qui a dit qu'il pourrait être soutenu qu'il est facile de se perdre dans ses vastes de la documentation si vous n'êtes pas familier avec Ninject et/ou DI.
Il y a quelques tutoriels en ligne qui cette une j'ai pensé a été particulièrement instructif. Alors qu'il fournit un exemple à l'aide d'un
console application
, les principes de laNinject
œuvres restent les mêmes.Quel que soit votre type d'application vous configurez votre conteneur à votre demande point d'entrée;
Main
App
(sauf si vous utilisez un cadre dans lequel cas vous pouvez fournir un programme d'amorçage personnalisé)AVERTISSEMENT je ne prétends pas être une autorité sur
Ninject
ouDI
, ci-dessous est simplement un exemple de la façon dont je comprends ces deux objets peut être utilisé en conjonction avec un autre.Par exemple souci, nous allons travailler avec les exemples fournis dans la Ninject de la documentation.
1) Créer une application WPF nommé
NinjectIoC
2) Utiliser Nuget pour ajouter une référence à la
Ninject
projet3) Ouvrir
App.xaml
et retirer leStartupUri
bien de laApplication
élément de sorte que votreApp.xaml
se présente comme suit:La raison pour laquelle nous faisons c'est parce que le
StartupUri
propriété informe leWPF
application qui contrôle d'INTERFACE utilisateur pour afficher au démarrage de l'application. Nous allons utiliserNinject
pour afficher notre premier contrôle d'INTERFACE utilisateur.4) Ouvrir
App.xaml.cs
. C'est là que nous allons configurer leNinject
container
, ouKernel
à utiliserNinject
de la terminologie. Nousoverride
l'applicationOnStartup
méthode de sorte que nous pouvons configurer notrecontainer
et par la suite procéder à l'initialisation de l'application que nous le voudrions. Mettre à jour le contenu de votreApp.xaml.cs
présente comme suit:Une brève explination:
4.1)
OnStartup - Override the
OnStartupmethod so that we may configure our
container " et initialiser l'application que nous voulons.4.2)
ConfigureContainer
- Informer notrecontainer
de la façon dont nous aimerions résoudre nos types de béton. Il y a beaucoup plus à ce que j'ai affiché dans cet exemple, cependant, il ya beaucoup plus à ce que j'ai montré. Il y a des sujets tels que Multi Liaison, La Liaison Des Conventions et Les Modules Du Noyau pour qui vous êtes meilleur moyen d'apprendre au sujet de la la documentation officielle.4.3)
ComposeObjects
- après Avoir enlevé leStartupUri
propriété deApp.xaml
nous devons informer, l'application de contrôle d'INTERFACE utilisateur que nous souhaitons utiliser pour leMainWindow
. Aux côtés de demander à noscontainer
à utiliserMainWindow
que notreMainWindow
nous avons mis l'Title
bien trop. Encore une fois, vous voulez peut-être faire d'autres tâches ici pour le manuel de composition d'objet.Vous n'avez pas à séparer les étapes que j'ai ci-dessus, pour cet exemple artificiel, il serait plus logique de ne pas déranger. En tant que votre demande se développe et vous commencer à faire plus sophistiqué des choses avec la
container
, en séparant les étapes commence à faire de lacontainer
configuration plus facile à gérer. Le choix est le vôtre.5) la Prochaine ouverture de
MainWindow.xaml
, puis copiez et collez les éléments suivants:Je ne vais pas la peine d'expliquer ci-dessus comme il devrait être évident que ce qui se passe.
6) Enfin ouvrir
MainWindow.xaml.cs
et le mettre à jour comme suit:De nouveau, je vais faire cette brève comme ce qui se passe ci-dessus n'a rien à voir avec la configuration de
Ninject
et il devrait encore une fois être évident ce qui se passe.La principale chose à remarquer dans le ci-dessus est le
argument
que leMainWindow
constructeur attend;IWeapon
. Vous pourriez vous demander Comment cela se régler comme je ne suis pas la création d'une mise en œuvre concrète deWeapon
n'importe où?Bien au cours de la
ConfigureContainer
méthode dansApp.xaml.cs
nous avons informé lescontainer
la façon dont nous aimerions qu'à résoudre des dépendances pourIWeapon
:Ci-dessus indique la
container
que n'importe où il rencontre une dépendance pourIWeapon
nous tenons à fournir une instance deWeapon
. Sur la demande decontainer
résoudre (Get
) notre premierMainWindow
de contrôle, en utilisant les éléments suivants:La
container
pris un coup d'oeil à ses constructeurs et déterminé le constructeur avec la plupart des arguments qu'il a compris. Dans cet exemple, c'est le constructeur qui a exigé une mise en œuvre deIWeapon
et oh, regardez, lacontainer
sait comment résoudre cette dépendance, car nous avons dit comment le faire le plus tôt possible dansConfigureContainer
.En supposant que ni vous ni moi n'avons fait aucune erreur avec le code ci-dessus, en appuyant sur
F5
devrait lancer l'application et vous devriez voir une petite fenêtre avec uneTextBox
etButton
. Entrez quelque chose dans leTextBox
puis appuyez sur laButton
et vous devriez voir unMessageBox
de contrôle, vous informant que vous swang votre épée comme un"mad man"
à quiconque ou quoi que vous avez entré dans leTextBox
.Il y a beaucoup plus de deux
Ninject
etDI
que j'ai décrites ici. Par exemple il y a des livres entiers sur le sujet deDI
comme celle-ci par la Marque de Seeman.J'espère que le ci-dessus vous donnera au point de départ où chercher et où aller pour aller plus loin avec vos aventures avec
Ninject
etDI
.Je suis heureux d'être de l'aide. Si vous avez trouvé ma réponse utile, merci de penser à un upvote ou de le marquer comme réponse à la fois pour moi et pour la communauté. [:
hahaha désolé, fait à marque de votre réponse
Je suis désolé, mais c'est trop simpliste pour moi de upvote. Nous savons que nous pouvons résoudre manuellement un composant du noyau. Le défi WPF serait de résoudre automatiquement les ressources par l'intermédiaire du CIO dans le code XAML.
Euh, c'était d'une bonne qualité de post qui explique les tenants et les aboutissants de l'utilisation de base. Si elle n'est pas utile pour vous, puis passez à la suite. Pas besoin de dévalorisation.
OriginalL'auteur