12

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

En el momento en que es justo con una clase estática con el siguiente método:

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

Me gustaría que la experiencia de ser transparente, pero no puedo pensar en una manera de lograr esto desde una aplicación de consola.

Respuesta

7

Deberá realizar una llamada de localización de servicios (Resolve<T>()) en alguna parte. El truco es hacerlo lo más alejado posible. Para 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.

+0

¿Llama al método Resolver () directamente desde el contenedor IoC o utiliza un contenedor para ocultar el contenedor IoC de la aplicación de la consola? – Rookian

+0

llámelo directamente desde el contenedor ... a menos que tenga una razón para ocultarlo. –

+1

@MattHinze ¿Todavía se considera un antipatrón incluso en una aplicación de consola? – Rushino

1

He utilizado 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 entonces hacer con esos objetos depende de lo que la aplicación de consola está tratando de hacer, por supuesto.

3

Las aplicaciones de consola no tienen ninguna limitación sobre una aplicación web o 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.

+0

Olvidó la unidad –

Cuestiones relacionadas