Sé que algunos marcos DI admiten esto (por ejemplo, Ninject), pero específicamente quiero saber si es posible con Autofac.¿Puede Autofac hacer autoaglomeración automática?
Quiero ser capaz de pedir un contenedor Autofac para una clase concreta, y obtener una instancia con todas las dependencias de constructor apropiadas inyectadas, sin registrar esa clase concreta. es decir, si no Ato de forma explícita, a continuación, de forma automática obligar a la clase concreta a sí mismo, como si hubiera llamado builder.Register<MyClass>();
Un buen ejemplo de cuando esto sería útil es ViewModels. En MVVM, la estratificación es tal que solo la vista depende del modelo de vista, y eso a través de la escritura suelta, y usted no prueba la vista de todas maneras. Por lo tanto, no es necesario burlarse de ViewModel para realizar pruebas, por lo que no hay razón para tener una interfaz para cada ViewModel. Entonces, en este caso, el patrón DI habitual de "registrar esta interfaz para resolver esta clase" es una complejidad innecesaria. Explícito autoaglutinante, como builder.Register<MyClass>();
, también se siente como un paso innecesario cuando se trata de algo tan sencillo como una clase concreta.
Conozco el reflection-based registration example en los documentos de Autofac, pero eso no es para mi gusto tampoco. No quiero la complejidad (y lentitud) de registrar cada clase posible antes de tiempo; Quiero que el marco me dé lo que necesito cuando lo necesite. Convención sobre la configuración, y todo eso.
¿Hay alguna forma de configurar Autofac para que pueda decir "Oh, este es un tipo concreto, y nadie lo ha registrado todavía, así que simplemente actuaré como si hubiera sido registrado con la configuración predeterminada"?
Sweet - suena exactamente como lo que estaba buscando. ¡Gracias! –