services net microsoft iservicecollection injection extensions dependency configureservices asp app c# dependency-injection inversion-of-control console-application

c# - net - IOC para una aplicación de consola?



microsoft extensions dependency (4)

¿Alguien puede pensar en una buena solución para obtener IOC en una aplicación de consola?

Por el momento solo estamos usando una clase estática con el siguiente método:

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

Me gustaría que la experiencia sea perfecta, pero no puedo pensar en una forma de lograr esto desde una aplicación de consola.


Las aplicaciones de consola no tienen ninguna limitación sobre una aplicación web o de formulario para IoC. Puede usar cualquiera de su elección (Spring, Ninject, Unity, etc.). La mayoría de ellos son configurables con archivos XML fuera de la aplicación de la consola y algunos como Ninjector requieren una configuración dentro de su aplicación.


Pedido de Microsoft Unity .


Utilicé Spring.NET desde una aplicación de consola sin problemas. Solo necesita apuntarlo a su archivo de configuración y conectará todas las dependencias. Entonces, lo que haces con esos objetos depende de lo que la aplicación de consola intenta hacer.


Deberá realizar una llamada localizador de servicio ( Resolve<T>() ) en algún lugar. El truco es hacerlo lo más alejado posible. Para las aplicaciones de consola, este bootstrapping ocurre en el método Main() . Hazlo allí y minimiza esas llamadas de resolución en otro lugar y estarás genial. Para la mayoría de las dependencias, use la inyección de constructor.