2012-05-29 3 views
7

Ho un modulo personalizzato, Module1. In questo modulo, sto facendo riferimento a un altro modulo personalizzato, Module2. Tutto stava funzionando bene la settimana scorsa.- Nessuno dei costruttori trovati con 'Orchard.Environment.AutofacUtil.DynamicProxy2.ConstructorFinderWrapper'

Ho fatto una nuova installazione di Orchard stamattina. Da allora, ho ricevuto questo errore.

Nessuno dei costruttori trovati con 'Orchard.Environment.AutofacUtil.DynamicProxy2.ConstructorFinderWrapper' del tipo 'Module1' può essere richiamato con i servizi ei parametri disponibili: Impossibile risolvere il parametro 'Module2' di .ctor Void costruttore'(. ..)'.

Qualche idea su come correggere questo errore?

Grazie.

risposta

4

Ciò significa che non è stato possibile trovare un'implementazione di alcune interfacce. Diverse cose possono essere accadute: un modulo potrebbe non essere riuscito a compilare, o ti sei dimenticato di creare un'interfaccia derivata da IDependency.

2

Ho avuto lo stesso problema. Sembra che abbia fatto riferimento alla classe concreta e non all'interfaccia nel mio costruttore.

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

Invece di

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

So che il post è abbastanza vecchio ora, ma solo per collegare ogni possibile errore che potrebbe causare il problema descritto ... qui è il mio errore.

Ho semplicemente dimenticato di abilitare il modulo di riferimento dalla dashboard. Ovviamente questo non mi ha impedito di aggiungere un riferimento al progetto e una dipendenza del modulo, avendo il codice compilato perfettamente.

Il punto è, il mio modulo di riferimento non contiene alcuna definizione del tipo di contenuto. È solo un modulo concepito per raccogliere alcune funzionalità e utilità comuni. Ecco perché ho dimenticato di attivarlo.

Cheers.

1

È possibile ottenere questo errore se i moduli sono stati abilitati manualmente. Assicurati di eliminare App_Data \ cache.dat e di riciclare il pool di app.

0

lista di controllo è:

  1. Interface deriva da IDependency
  2. Attuazione derivano da interfaccia
  3. Constructor fa riferimento l'interfaccia
  4. costruire tutti e verificare se tutti i moduli di riferimento compilare
  5. Abilita modulo in Admin panel

esempio:



    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; } 
    }