2009-07-17 17 views
5

Yapılandırılmış Haritadaki genel bir arabirimin tüm örneklerini nasıl kaydederim?StructureMap içinde genel arabirimler nasıl kaydedilir

Bir hiçbiri genel arabirimi için bunun nasıl biliyorum:

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

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

cevap

10

Ben

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

Burada anahtar bu yaklaşım olmayan jenerik aşırı kullandığı gibi bir şey ile gider AddAllTypesOf(). Aksi halde bu aslında yapışkan bir widget haline gelir. Kaçırdığım yaklaşımınız şey var olmadıkça StructureMap Auto registration for generic types using Scan

Bu hile yapmak gerekir - bu yüzden eğer güncellemek için çekinmeyin:

bu SO bu endişeleri etrafında iyi bir tartışma için iplik bakın.

İlgili konular