기본 데이터 소스에 액세스하려면 내가 가지고 있지 않은 현재 사용자 자격 증명을 제공해야합니다. ServiceLocator 방지 패턴을 피하는 방법은 무엇입니까?
그래서 적절한 현재 사용자 자격 증명을 사용하여 데이터 액세스 레이어를 제공하기 위해, 내ConfigurationProvider
이
this answer
에 따라
ICurrentUser
InSingletonScope()
의 인스턴스에 의존하는 것이 제안되었다.
내가 이해하는 방식으로, 나는 사용자를 인증하고 나중에 ICurrentUser
을 바인딩하고 나머지 데이터 액세스 레이어를 바인딩하는 방법에 대해 확신해야합니다.
메인 MDI 폼에서 인증이 발생하므로 MDI 폼의 생성자에 Ninject 커널을 주입하는 것이 유일한 방법입니다.
내 관심사는 내가 본 것을 보는 방법에 관한 것이고, Ninject 커널 자체에 의존하는 것이 필수적이다. 이것은 의심의 여지가 없기 때문이다. 안티 패턴을 사용하는 것 같습니다.
따라서이 시나리오에서는 ServiceLocator
안티 패턴을 피하는 방법은 무엇입니까?
이 봐 http://stackoverflow.com/questions/9021766/multitenancy-with-fluent-nhibernate-and-ninject-one-database-를 타고 임차인 당 하나의 동일한 문제를 설명합니다. 하지만 요점을 놓치고 있다고 생각합니다. 인증 양식에 IKernel이 필요하지 않습니다. 'CurrentUser.Instance'를 싱글 톤으로 접근하고'ServiceLocator'를 참조하지 마십시오. 하지만 이제 당신은'정적'으로 연결됩니다. :) 그러나 다시, 당신은이 'ICurrentUserAcessor'를 구현하고 내부 정적 액세스를 마스킹 할 수 있습니다! – cvbarros