2009-07-17 14 views
5

Come registrare tutte le istanze di un'interfaccia generica in Mappa strutturata?Come registrare interfacce generiche in StructureMap

so come fare questo per un'interfaccia generica nessuno:

internal class MVCDemoRegistry : Registry 
    { 
     public MVCDemoRegistry() 
     { 
      Scan(x => 
      { 
       x.Assembly("MVCDemo"); 
       x.Assembly("MVCDemo.Infrastructure"); 
       x.Assembly("MVCDemo.Services"); 

       x.AddAllTypesOf<ISupplyView>(); 
      }); 
     } 
    } 

risposta

10

Vorrei andare con qualcosa come

// in IToaster.cs 
public interface IToaster<T> {} 

// in your StructureMap registry 
Scan(x => 
{ 
    x.Assembly("MVCDemo"); 
    x.Assembly("MVCDemo.Infrastructure"); 
    x.Assembly("MVCDemo.Services"); 

    x.AddAllTypesOf(typeof(IToaster<>)) 
}); 

La chiave qui è che questo approccio utilizza il sovraccarico non generico di AddAllTypesOf(). Altrimenti diventa davvero un widget appiccicoso.

Vedere questo SO filo per una buona discussione intorno a queste preoccupazioni: StructureMap Auto registration for generic types using Scan

Questo dovrebbe fare il trucco a meno che non ci sia qualcosa circa il tuo approccio che mi manca - sentitevi liberi di aggiornare in caso affermativo.

Problemi correlati