Pregunta

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

En este 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 fuera perfecta, pero no puedo pensar en una forma de lograr esto desde una aplicación de consola.

¿Fue útil?

Solución

Tendrá que hacer una llamada de localización de servicio (Resolve<T>()) en algún lugar. El truco es hacerlo lo más apartado posible. Para aplicaciones de consola, este arranque ocurre en el método Main(). Hazlo allí y minimiza esas llamadas de Resolver en otro lugar y serás genial. Para la mayoría de las dependencias, use la inyección del constructor.

Otros consejos

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 un archivo XML fuera de su aplicación de consola y algunos como Ninjector requieren una configuración dentro de su aplicación.

He usado Spring.NET desde una aplicación de consola sin problemas. Solo necesita apuntarlo a su archivo de configuración, y conectará todas las dependencias. Lo que luego haces con esos objetos depende de lo que tu aplicación de consola esté tratando de hacer, por supuesto.

Pagar Microsoft Unity .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top