2012-05-29 6 views
7

Tengo un módulo personalizado, Module1. En este módulo, estoy haciendo referencia a otro módulo personalizado, Module2. Todo funcionó bien la semana pasada.Error: ninguno de los constructores encontrados con 'Orchard.Environment.AutofacUtil.DynamicProxy2.ConstructorFinderWrapper'

Hice una nueva instalación de Orchard esta mañana. Desde entonces, he estado recibiendo este error.

Ninguno de los constructores encontrados con 'Orchard.Environment.AutofacUtil.DynamicProxy2.ConstructorFinderWrapper' en el tipo 'Module1' puede invocarse con los servicios y parámetros disponibles: No se puede resolver el parámetro 'Module2' del constructor 'Void .ctor (. ..) '.

¿Alguna idea de cómo solucionar este error?

Gracias.

Respuesta

4

Eso significa que no se pudo encontrar una implementación de alguna interfaz. Varias cosas pueden haber sucedido: es posible que un módulo no haya podido compilarse o que haya olvidado crear una interfaz derivada de IDependency.

2

Tuve el mismo problema. Parece que hice referencia a la clase concreta y no a la interfaz en mi constructor.

 public OrderService(
      IRepository<Order> orderRepository, 
      ProductService productService, 
      ProductCategoryService productCategoryService 
     ) 

En lugar de

 public OrderService(
      IRepository<Order> orderRepository, 
      IProductService productService, 
      IProductCategoryService productCategoryService 
     ) 
3

Sé que el post es bastante viejo ahora, pero sólo para enlazar cualquier posible error que podría causar el problema descrito ... aquí es mi error.

Simplemente olvidé habilitar el módulo al que se hace referencia desde el tablero. Por supuesto, eso no me impidió agregar una referencia de proyecto y dependencia de módulo, teniendo el código compilando perfectamente.

El punto es que mi módulo al que se hace referencia no contiene ninguna definición de tipo de contenido. Es solo un módulo concebido para recopilar algunas funcionalidades y utilidades comunes. Es por eso que olvidé habilitarlo.

Saludos.

1

Puede obtener este error si habilitó manualmente sus módulos. Asegúrese de eliminar App_Data \ cache.dat y reciclar el grupo de aplicaciones.

0

lista de verificación es:

  1. interfaz derivan de IDependency
  2. Implementación derivan de interfaz
  3. Constructor hace referencia a la interfaz
  4. Build All y comprobar si todos los módulos referenciados compilan
  5. módulo de administración de Active panel

ejemplo:



    public class myController : Controller{ 
     private readonly IMyService _myService; 

     public myController(
      IMyService myService 
     ) { 
     _myService = myService; 
     } 
    } 



    public interface IMyService : IDependency 
    { 
     int GetOne(); 
    } 



    public class MyService: IMyService 
    { 
     public MyService() 
     { // init code } 

     public int GetOne() 
     { return 1; } 
    } 

Cuestiones relacionadas