Question

Quelqu'un peut-il penser à une bonne solution pour intégrer IOC à une application console?

Pour le moment, nous utilisons simplement une classe statique avec la méthode suivante:

public static T Resolve<T>()
{
    return dependencyResolver.Resolve<T>();
}

J'aimerais que l'expérience soit transparente, mais je ne peux pas penser à un moyen d'y parvenir à partir d'une application console.

Était-ce utile?

La solution

Vous devrez faire un appel de localisateur de service (Resolve<T>()) quelque part. L'astuce consiste à l'obtenir le plus en dehors possible. Pour les applications console, ce démarrage se produit dans la méthode Main(). Faites-le là-bas et minimisez les appels Resolve ailleurs et vous serez génial. Pour la plupart des dépendances, utilisez l’injection de constructeur.

Autres conseils

Les applications de console ne sont soumises à aucune limitation par rapport à une application Web ou à un formulaire pour IoC. Vous pouvez utiliser n'importe lequel de vos choix (Spring, Ninject, Unity, etc.). La plupart d'entre eux sont configurables avec un fichier XML en dehors de votre application console et certains, comme Ninjector, nécessitent une configuration dans votre application.

J'ai utilisé Spring.NET à partir d'une application console sans aucun problème. Vous avez juste besoin de le pointer sur votre fichier de configuration, et il va brancher toutes les dépendances. Ce que vous faites ensuite avec ces objets dépend bien entendu de ce que votre application console tente de faire.

Checkout Microsoft Unity .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top