2009-07-17 10 views
5

ジェネリックインターフェイスのすべてのインスタンスを構造化マップに登録するにはどうすればよいですか?Structure Mapでジェネリックインターフェイスを登録する方法

私はどれも一般的なインタフェースのためにこれを行う方法を知って

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

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

答えて

10

私はここにキーは、このアプローチは、非ジェネリックオーバーロードを使用していることである

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

のようなものとなるだろうAddAllTypesOf()。さもなければ、これは本当にスティッキーウィジェットになります。

が、これはSOこれらの懸念の周りには良い議論のためのスレッドを参照してください:私は欠けているあなたのアプローチについての何かがありますしない限り、StructureMap Auto registration for generic types using Scan

これはトリックを行う必要があります - その場合は更新してお気軽に。

関連する問題