2011-12-07 4 views
3

웹 서비스를 사용하여 로그인하고 라이센스 정보를 얻는 데 의존하는 WPF의 데스크톱 응용 프로그램을 개발하고 있습니다. 이것은 사용자가 로그인하고 라이센싱 및 로그인 날짜 등으로 클라이언트 측 (내 데스크톱 응용 프로그램에서) 객체를 구축한다는 것을 의미합니다.DI (Dependency Injection)에 대한 최선의 접근법

구조용을 사용하고 있으며 내 IMyUser 구현을 ViewModels 생성자 (생성자 DI). 내 질문에, 내 구조지도 IM 내 생성자에 내 IMyUser 구현을 전달하는 경우 내 초기화를 넣어야합니까?

내가 로그인 한 후 생각하고 IMyUserObject를 만들었습니다. StructureMap을 구성하고 내 사용자 객체의 인스턴스를 전달할 수 있습니다. 이것은 내 응용 프로그램에서 다소 늦은 것입니다 (보통 응용 프로그램 클래스에 넣어서 응용 프로그램 내에서 실행됩니다).

IMyUser와 DI를 활용하는 적절한 방법이 아니라면 조언을 구하십시오. 다른 해결책도 크게 부탁드립니다.

답변

4

승인에 관한 질문이므로 맞춤 IPrincipal 구현을 통해 처리하는 것이 훨씬 더 효율적이라고 생각합니다.

응용 프로그램이 시작되면 Thread.CurrentPrincipal에 구현을 할당하십시오. 이 초기 인스턴스는 사용자를 인증하면 안됩니다.

사용자가 로그인하여 라이센스 정보를 받으면 Thread.CurrentPrincipal을 바꾸거나 업데이트하여 사용자에게 응용 프로그램 사용 권한을 부여하십시오.

이것은 Ambient Context 패턴의 예입니다. 이 상호 작용에 StructureMap을 포함시킬 필요는 없습니다.

+0

Cheers Mark, 구조에 뛰어 들기를 바랬습니다 :-) 사용자 정의 IPrincipal을 구현하는 데 어려움이 있습니다. –

관련 문제