Ninject 자동 바인딩으로 벨로우즈 코드를 바인딩하는 것을 좋아합니다. 단일 프로젝트 내에서 수동 바인딩과 수동 바인딩을 모두 사용할 수 있습니까? let; s 수동 바인딩을 사용하여 벨로우즈를 가져오고, 자동 바인딩으로 달성하고 싶습니다. 이것을 달성하는 방법을 알려주십시오. IRepository < 모델>Ninject Conventions Extension을 사용하여 바인딩하는 방법?
3
벨로 기본 인터페이스로부터 상속 된 모든 인터페이스
kernel.Bind<IUnitOfWork<TestContext>>().To<UnitOfWork<TestContext>>();
kernel.Bind<TestContext>().ToSelf().InRequestScope();
- .
kernel.Bind<IUserRepository>().To<UserRepository>();
4.
kernel.Bind<IAccountRepository>().To<AccountRepository>();
5. 추가
kernel.Bind<IMessageRepository>().To<MessageRepository>().WithConstructorArgument("apikey", AppSettingsManager.GetSmsApiKey)
나는 그것이 같은
.Exclude<ARepository>()
.Exclude<BRepository>()
.Exclude<CRepository>()
로 할 필요하면 내가 여러 클래스에 대한.Exclude<MessageRepository>()
를 작성해야합니까?및 1 & 2 별도의 수동 바인딩이 필요합니까? 또는 1은
BindToSelf()' and
을 사용하여 수행 할 수 있습니다. 구성 (b => b.InRequestScope()) '?
1. 및 2.에 대해서는 별도의 바인딩을 사용해야합니다. 이론적으로 컨벤션을 사용하여 전체 어셈블리의 모든 클래스를 기본 인터페이스로 바인딩하도록 말할 수는 있지만 중장기 적으로 이것은 구체적인 단일 바인딩을 지정하는 것보다 더 복잡한 작업을 유발할 수 있습니다. 또한 기존 바인딩을 여러 개 사용할 수 있습니다. – BatteryBackupUnit