2011-05-01 4 views
3

사용자 정의 RoleProvider를 구현 중이며 Ninject를 사용하고자하지만 매개 변수없는 생성자 문제가 있습니다. 이것에 대한 주사하는 방법에 대한 모든 생각 ??매개 변수가없는 생성자가있는 Ninject 및 Provider 모델

public class EFRoleProvider:RoleProvider 
{ 
    private readonly IRepository _repository; 

    // I want to INJECT this GOO here! 
    public EFRoleProvider() 
    { 
     IContextFactory contextFactory = new DbContextFactory<myEntities>(); 
     _repository = new RepositoryBase(contextFactory); 

    } 
} 
+0

이 게시물이 당신을 관심을 끌지 수도 있습니다 : http://blog.ploeh.dk/2011/04/27/ProviderIsNotAPattern.aspx – Steven

+0

그레이트 포스트, 그래서 기본적으로 내 자신의 인터페이스와 구현 롤백해야하고 공급자 XML을 문질러 공급자로서의 web.config는 절름발이입니다. 다시 도면 보드로 돌아 가기 LOL – CrazyCoderz

답변

1

당신은 하드 무언가를 주입 할 수 없다. 죄송합니다. DI 프레임 워크는 이것을 지원하지 않습니다. 생성자에서 인스턴스를 하드 코드 했으므로 이제 더 이상 제어 반전이 아닙니다. 제어 반전을 수행하려면 가능한 한 느슨하게 결합 된 레이어를 정의해야합니다.

public class EFRoleProvider: RoleProvider 
{ 
    private readonly IContextFactory _contextFactory; 
    public EFRoleProvider(IContextFactory contextFactory) 
    { 
     _contextFactory = contextFactory; 
    } 
} 

이제 DI 프레임 워크를 구성하십시오.

+0

RoleProvider에서 파생하는 경우 매개 변수가없는 ctor가 있어야합니다. 이것이 내가이 문제에 관해 실행하고있는 곳입니다. DI 구성은 문제가 아닙니다 :) 매개 변수화 된 생성자는 결코 호출되지 않습니다. – CrazyCoderz

+0

어시스턴트에게 도움을 주겠다. RoleProvider는 매개 변수없는 생성자를 필요로하는 레거시 ASP.NET 클래스이며 AFAIK는 생성을 제어 할 수있는 후크가 없다. 대안으로 기본 생성자의'StandardKernel'에서 의존성을 가져올 수 있습니다. –

+0

그래, 지금은 Ninject로 그 일을하는 방법을 찾고있다. – CrazyCoderz

관련 문제