2011-02-28 1 views
0

비주얼 스튜디오 2010이 가능 Visual Studio에서 다른 클래스로 새로운 클래스를 등록 할 수 있나요 : 나는 새 클래스를 추가 할 경우 지금내가 structuremap 레지스트리 클래스가 ... 2010

public class RepositoryRegisters: IRegistry 
{ 
    public RepositoryRegisters() 
    { 
     For<IUserRepository>().Use<UserRepository>(); 
     For<IGroupRepository>().Use<GroupRepository>(); 
    } 
} 

을 그 implements IRepository<T>

위의 클래스 (RepositoryRegisters)의 생성자에 자동으로 추가되기를 원합니다. 즉 ie를 추가하면. 이게 가능

For<IMyRepository>().Use<MyRepository>(); 

: MyRepository 클래스는, 그 비주얼 스튜디오는 자동으로 RepositoryRegisters 생성자에이 줄을 추가?

답변

1

scan with DefaultConvention을 사용하는 경우 동일한 명명 규칙을 따르는 한 레지스트리에 다른 것을 추가 할 필요가 없습니다.

Scan(scanner => 
    { 
     scanner.AssemblyContainingType<IRepository<>>(); 
     scanner.WithDefaultConventions(); 
    }); 

이것은 모든 구현을 이름 (IUserRepository -> UserRepository 등)으로 인터페이스에 연결합니다.

0

예.하지만 결국 inversion of control이 필요합니다.

편집 : Reflection 마술을 시도해 볼 수도 있습니다.

+0

하지만 ioc와 리플렉션을 사용하면 런타임에만 가능합니다. 디자인 타임에이 작업을 수행하고 싶습니다. – Luka

+0

다음과 같은 것을 원합니다. 사용자가 Visual Studio 프로젝트의 폴더를 마우스 오른쪽 버튼으로 클릭하면 새 항목 추가를 선택하고 목록에서 내 사용자 정의 클래스 항목을 선택합니다. 그런 다음 클래스가 솔루션 폴더에 삽입되면 Visual Studio는 자동으로 RepositoryRegisters.cs 파일을 열고 해당 생성자를 찾고 코드 줄을 추가합니다. – Luka