사용자가 응용 프로그램에 로그인 한 후 사용자 정보를 유지하여 여러 클래스에 걸쳐 데이터를 공유하려는 경우이를 수행하는 가장 좋은 방법은 무엇입니까?정적 클래스 내에 사용자 정보 저장
보통 내가 정적 클래스의 속성이 같은 일을 계속 :
public User CurrentUser { get; set; }
당신의 생각은 무엇입니까?
미리 감사드립니다.
WPF에서사용자가 응용 프로그램에 로그인 한 후 사용자 정보를 유지하여 여러 클래스에 걸쳐 데이터를 공유하려는 경우이를 수행하는 가장 좋은 방법은 무엇입니까?정적 클래스 내에 사용자 정보 저장
보통 내가 정적 클래스의 속성이 같은 일을 계속 :
public User CurrentUser { get; set; }
당신의 생각은 무엇입니까?
미리 감사드립니다.
WPF에서:
// You can use your Application.Current.Resources dictionary to store the
// current logged-in user info.
Application.Current.Resources["UserInfo"] = userInfo;
그런 다음 응용 프로그램에서 아무 곳이나 현재 사용자 정보 객체를 검색 할 수 있습니다 현재 로그인 한 사용자에 대해 필요한 모든 정보를 포함 UserInfo
라는 클래스가 상상 다음 코드 :
var userInfo = Application.Current.Resources["UserInfo"] as UserInfo;
좋은 지적이지만 생각은 질문을 구현하는 방법보다는 싱글 톤을 사용해야하는지에 대한 질문입니다. 그러나 WPF에서는 XAML의 UserInfo에 바인딩 할 수 있기 때문에이 방법을 사용하는 것이 좋습니다. +1 – ColinE
나는 보통 테스트 성 문제로 인해 싱글 톤 클래스를 사용하지 않으며, 또한 코드의 복잡성을 증가시킨다. 제 생각에는 Application.Resources 사전 객체의 사용이 더 쉽고 간단합니다 + 그것은 테스트 할 수 있습니다 : D –
은 당신이 제안하는 것은 singleton 내에서 사용자 정보를 저장하는 것입니다. 이것은 데스크톱 응용 프로그램에서 상당히 일반적으로 사용되는 잘 알려진 패턴입니다. 당신이 인터페이스를 통해 노출되지 않는 싱글이있는 경우
데스크톱 응용 프로그램 내에서 문맥 상 문제가 될 수있는 유일한 것은 테스트 가능성입니다. 이 경우 IUser
인터페이스를 정의하면됩니다.
요약하면 네, 괜찮습니다. 과거에이 패턴을 여러 번 사용했습니다.
어떤 종류의 앱입니까? WinForms? ASP.NET? WPF? –
죄송 합니다만 명시하지 않았지만 게시글을 편집했습니다. – saber
@ChrisShain 내가 편집 한 태그 – saber