2009-07-17 2 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(). 그렇지 않으면 참으로 끈적한 위젯이됩니다. 내가 부족 당신의 접근 방식에 대해 뭔가가 아니라면 StructureMap Auto registration for generic types using Scan

이 트릭을 할해야 - 그렇다면 갱신 주시기 :

것은이 SO 이러한 우려가 우월하고 토론 스레드를 참조하십시오.

관련 문제