2009-07-17 13 views
5

Jak zarejestrować wszystkie wystąpienia ogólnego interfejsu w Structured Map?Jak zarejestrować ogólne interfejsy w StructureMap

wiem jak to zrobić na brak interfejsu rodzajowego:

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

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

Odpowiedz

10

pójdę z czymś jak

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

Kluczem tutaj jest, że to podejście wykorzystuje nierodzajową przeciążenie AddAllTypesOf(). W przeciwnym razie staje się to naprawdę sprytnym widgetem.

Zobacz ten SO wątku dla dobrej dyskusji wokół tych problemów: StructureMap Auto registration for generic types using Scan

To powinno wystarczyć, chyba że jest coś o swoim podejściu mi brakuje - nie krępuj się aktualizować, jeśli tak.

Powiązane problemy