2011-02-28 2 views
0

사용자 정의 도메인 서비스 내의 저장소에 액세스하는 상황이 있으며이를 주입하는 것이 좋습니다.Ria Services (Custom DomainService)가 설치된 Ninject

e.e.

[EnableClientAccess()] 
    public class UserDomainService : DomainService 
    { 

    public IUserRepository repo; 

    public UserDomainService(IUserRepository userRepo) 
     : base() 
    { 
     repo = userRepo;    
    } 

    public IEnumerable<User> GetUsers() 
    { 
     return this.repo.GetUsers(); 
    } 

나는 많은 도메인 서비스를 가지고 제가 확신 해요 나의 도메인 서비스의 모든 내 타입 바인딩을 잡고 커널에로드 할 수있는 Ninject에 모듈을 정의하는 곳입니다. 나는 이것을 어떻게 할 수 있는지를 보여주는 간단한 예를 찾고있다.

+0

,하지만 당신이 하나를 찾을 수 있을지 관심이있을 것입니다. 지금은 Ninject를 사용하는 사용자 지정 DomainServiceFactory를 만들 수 있어야합니다. –

+0

@Kyle McClellan - 내가 생각한 한 가지 옵션은 NinjectHttpApplication 클래스를 확장하고 Global.asax에서 바인딩과 모듈을 정의하는 것이 었습니다. 그러나, 나는이 DomainServices가 어떻게/어디에서 작동하는지에 대한 이해가 부족하다고 생각합니다. Global.asax 코드는 정상적으로 실행되었지만 위의 코드가 실행될 때 사용자 지정 도메인 서비스 내의 IUserRepository는 여전히 NULL입니다. 같은 맥락에서 운영되지 않는다고 말하는 것 같아요? 나는 당신의 접근 방식을 취하고 공장과 함께 갈 것 같아요. –

답변

0

Ninject.Extensions.Web을 올바르게 트래킹했는데 기본 Global.asax 대신 NinjectHttpApplication을 확장했습니다. 이 하지 KernelContainer (새로 정의 Ninject에 모듈에 액세스 할) 노출을 않기 때문에

그러나, 당신은 당신이 제공하는 페이지 기본 클래스에서와 같은 사용자 지정 도메인 서비스를 주입 할 수없는 있도록 작동하지 않습니다.

그래서 ... 나는 결국

공개적으로 정적 커널을 노출하는 유사한 클래스 확장 같이 HttpApplication를 만들었습니다. 그런 다음 모든 도메인 서비스가 상속하는 기본 도메인 서비스를 만들었습니다. 생성자 내에서, 그때 전화가 내 도메인 서비스 인스턴스를 주입 할 수 있도록 : 나는 어떤을 보지 못했다

[EnableClientAccess()] 
    public class BaseDomainService : DomainService 
    { 
     public BaseDomainService() 
      : base() 
     { 
      MyCustomStaticKernelContainer.Inject(this); 
     } 
    } 
+0

왜 DomainService를 사용하지 않았습니까? 팩토리? IDomainServiceFactory (DomainService.Factory의 반환 유형)의 CreateDomainService 메소드는 Ria Services가 내부적으로 DomainService 인스턴스를 사용하는 방법이며 사용자가 생성 프로세스에 연결하는 데 권장되는 방법입니다. 스택 오버플로에 대한 좋은 대답은 여기 http://stackoverflow.com/questions/1294331/net-ria-services-domainservice-needs-a-parameterless-constructor. DomainFiles.Factory를 AutoFac 컨테이너와 함께 사용하는 좋은 예는 다음과 같습니다. http://code.google.com/p/autofac/wiki/RIAServices – JJS

관련 문제