2016-12-21 1 views
1

Scénario:injection de dépendances avec WebAPI

J'ai créé une solution avec 2 projets. L'un est un projet Web API et l'autre est une bibliothèque de classes pour les dépôts.

J'ai ajouté ninject comme DI dans le projet WebAPI. Ce blog bien défini pour utiliser ninject avec WebAPI.

Je peux configurer des classes de référentiel dans les méthodes RegisterServices du fichier NinjectWebCommon.cs. Ceci est disponible dans le dossier app_start du projet Web api.

Précision:

Je suis confus que, maintenant encore j'ajouté référence du projet de dépôt de projet api web pour enregistrer les classes de dépendance. Alors comment il n'est pas séparé du projet de dépôt.

Questions:

Est-ce la bonne façon ou j'oublié quelque chose?

Puis-je avoir mal compris le concept? Peut-être la réflexion pour vérifier trouver la classe d'exécution peut éviter la dépendance

S'il vous plaît conseiller et donner un blog correct ou de l'échantillon pour expliquer ce

+0

Vous le configurez en code. Si vous voulez une vraie séparation 1) définissez les interfaces pour ce que vous voulez utiliser, placez-les dans leur propre projet 2) référence ceci dans votre site Web et votre projet de référentiel 3) utilisez un fichier de configuration pour configurer autofac http: //docs.autofac .org/fr/latest/configuration/xml.html cela évite de devoir référencer le référentiel depuis le site web. – Will

+0

Je pense que le point 1, vous voulez dire un projet distinct pour les modèles. C'est bien. Le point 2 est correct si le modèle est un projet séparé. Le point 3 est la réponse à ma question correcte. Ok donc à travers la configuration pas besoin d'ajouter une référence à droite? Je n'ai pas eu un échantillon comme ça avec web api. Je vais vérifier que – Akhil

Répondre

0

Vous êtes absent le 3ème projet qui est votre pont entre votre WebAPI et à la bibliothèque du référentiel. Habituellement, il contient vos interfaces que vos objets DLL plugin implémenteraient et que votre WebAPI utiliserait. Tout votre code WebAPI devrait utiliser des interfaces car c'est le travail de DI pour vous donner la bonne classe en fonction de la configuration. Ceci est ce qui vous permet d'échanger des DLL, d'ajouter des DLL pour de nouvelles options, etc. Le projet WebAPI ne doit pas référencer le plugin car, bien, vous dépendiez de quelque chose que vous essayez de rendre dynamique.

+0

Vous voulez créer une autre bibliothèque avec ninject et y référer tous les projets. Donc, cette nouvelle bibliothèque ninject a toutes les références et webapi n'a qu'une référence ninject. Aussi les interfaces sont une autre bibliothèque et il devrait se référer à web api et aussi à la bibliothèque ninject. est-ce que je comprends bien? – Akhil