2014-12-28 1 views
2

WPF 및 MVVM Prism을 처음 사용합니다. 저는 5 년 이상 ASP.NET 개발자였으며 ​​최근에 WPF 프로젝트로 전환했습니다.WPF 프리즘 사용자 객체

현재 Unity와 함께 Prism 5.0을 사용하고 있습니다. 이 패턴을 따르는 주된 목적은 모듈성과 느슨한 결합을 구현하는 것입니다.

제 질문은 이렇습니다. 사용자 객체를 모든 모듈에서 보편적으로 액세스 할 수있게 만들고 싶습니다.

이것은 내가 지금까지 해왔 던 것입니다. 시작시 로그인 프로젝트에서 로그인 화면 (LoginView.xaml)으로 사용자를 맞이합니다. LoginViewModel은 자격 증명의 유효성을 검사합니다. 유효성 검사가 성공적으로 완료되면 LoginViewModel은이 검색된 객체를 Infrastructure 프로젝트의 정적 클래스에 전달합니다. 사용자 로그인은 단일/보편적 인 인스턴스이기 때문에 사용자 프로젝트를 유지하기 위해 인프라 프로젝트 아래에 정적 클래스를 만들었습니다.

GenericPrincipal을 사용해 보았습니다. 뷰를 통해 데이터를 유지하면서 필요한 데이터를 저장할 정도로 정교하지 않았습니다. 그래서 대신 정적 클래스를 사용했습니다.

누구든지 주위에 더 좋은 제안이 있습니까?

답변

2

정적 클래스에 사용자 개체를 등록하는 대신 사용자 인스턴스를 Unity 컨테이너 자체에 등록하는 것이 좋습니다. 당신의 LoginViewModel에서

, 당신은 당신의 IUnityContainer 클래스의 인스턴스를 얻어야한다. 로그인 방법에

public LoginViewModel(IUnityContainer container) 
{ 
    Container = container; 
} 

, 당신이 당신의 사용자 개체 등록 :

private void Login(object obj) 
{ 
    ... 
    if (user.Authenticated) 
    { 
     Container.RegisterInstance("CurrentUser", user); 
    } 
    ... 
} 

이 개체에 액세스하기를, 다음과 같은 코드를 사용 : 자세한 내용은

Container.Resolve<YourUserClassHere>("CurrentUser"); 

를 참조하십시오 Persisting user credentials in WPF w/Unity and MVVM