2017-03-27 1 views
0

바인딩을 ninject에서 autofac으로 변환하는 데 두 가지 문제가 있습니다.C# ninject 특정 바인딩을 autofac으로 변환

Bind<IMapper>().ToConstant(new Container().Mapper); 

두 번째는 다음과 같습니다 :

첫 번째는

Bind<Context>().ToSelf() 
       .WithConstructorArgument(CONNECTION_STRING, 
       c => c.Kernel.Get<IUserDatabase>().ConnectionString) 

당신은 내게 손을 빌려 수 있습니까?

은 처음 들어 당신에게

답변

2

감사합니다

builder 
    .RegisterInstance(new Container().Mapper) 
    .As<IMapper>(); 

두 번째의 경우 : 당신이 당신의 Context의 생성자에 정적 검사를 얻을로

// First option, with a parameter 
builder 
    .RegisterType<Context>() 
    .AsSelf() 
    .WithParameter(
     (parameter, context) => parameter.Name == CONNECTION_STRING, 
     (parameter, context) => context.Resolve<IUserDatabase>().ConnectionString)); 

// Second option, with a lambda 
builder 
    .Register(x => new Context(x.Resolve<IUserDatabase>().ConnectionString)) 
    .AsSelf(); 

내가 두 번째 옵션을 선호 클래스이지만 많은 매개 변수가 있으면 유지 관리가 어려울 수 있습니다.

this tweet에서 링크 된 기사를 읽는 것이 좋습니다. 원시 변수를 생성자 매개 변수로 사용하는 것이 우리의 삶을 더욱 힘들게하고 어떻게 해결할 지 이야기합니다.

+1

'.AsSelf()'는 선택 사항입니다. 인터페이스 별 레지스트리가없는 경우 기본 동작이므로 선택 사항입니다. – tdragon

+0

그냥 놀랍습니다. 완전한. 고마워. – rmszc81

관련 문제