2010-04-15 2 views
4

나는 내가 본 다른 사람들과 약간 다른 것처럼 보이는 상황이 있습니다. 명료화를 위해 이것은 일반적인 질문이 아닙니다. IAClass가 AClass 등에 매핑하는 것과 같은 것 - 인터페이스 당 기본적으로 하나의 구체적인 클래스를 사용하는 것을 포함합니다.구조지도 및 제네릭 종류

이것은 하나의 제네릭 클래스를 포함하지만 모든 가능한 사용법을로드 할 수 있기를 원합니다.

예 - 주 클래스는

public class MyClass<TDomainObject> : IMyClass<TDomainObject> 
    where TDomainObject : DomainObject 

그래서 예를 들어 용도가 될 것

IMyClass<Person> p = new MyClass<Person>; 
IMyClass<Employer> p = new MyClass<Employer>; 

즉이다 모든 DomainObjects에 대해 MyClass <>을로드 할 수 있기를 원합니다. 따라서 각 선언문에 대해 특정 클래스를 사용하지 않는다는 것을 알 수 있습니다. 모두 동일한 클래스를 사용합니다.

어떻게 이것을 StructureMap에로드 할 수 있습니까?

답변

3

사실 제네릭을보다 직접적으로 사용합니다. 당신이 Structuremap의 이전 버전을 사용하는 경우

For(typeof(IMyClass<>)).Use(typeof(MyClass<>)) 

, 더 자세한 ForRequestTypeTheDefaultIsConcreteType 대체합니다.

+0

:

그냥 같은 컨테이너를 만듭니다. StructureMap이 이런 방식으로 제네릭을 처리 할 수 ​​있다는 단서가 없었습니다. –

0

일부 검색을 마친 후에는 일반 제네릭으로 할 수있는 것처럼 Structuremap 2.5+의 자동 등록 기능을 규칙에 대한 제네릭으로 사용할 수 있다는 것을 알게되었습니다. 정말 유용한 팁입니다

return new Container(x => 
     { 
      x.Scan(y => 
      { 
       y.TheCallingAssembly(); 
       y.AddAllTypesOf(typeof(IMyClass<>)); 
       y.WithDefaultConventions(); 
      }); 
     });