우선, 내가 사용 Ninject에 2.0Ninject에와 마스터 페이지 주입
는 내가에 주입하고자하는 내 마스터 페이지를하지만 난 방법을 아주 확실하지 않다. 내가 System.Web.Mvc.ViewMasterPage에서 파생되는 클래스를 생성 시도하고 내 속성을 만들 : 나는 속성을 설정받을 둘의 내 페이지를 실행하고 모두 null의 경우
[Inject]
public ICacheService<List<Category>> Categories { get; set; }
[Inject]
public IConfigurationSettings Config { get; set; }
합니다. 왜 또는 어떻게 이것을 수행하는 방법에 대한 모든 아이디어? 감사합니다
- 업데이트
그래서 나는 더 많은 연구를했고 내가 Ninject에 클래스의 생성을 차단하지 않기 때문에 클래스 내 자신을 개체를 해결해야합니다 보인다. 그래서 지금 내 질문은 커널 용 리졸버를 어떻게 만듭니 까? 위의 코드는 클래스 라이브러리 내에 있으므로 커널에 대한 참조가 없습니다.
public class KernelResolver
{
private static IKernel _kernel;
public KernelResolver(IKernel kernel)
{
_kernel = kernel;
}
public static T Resolve<T>()
{
return _kernel.Get<T>();
}
}
을 (약간 http://www.codethinked.com/post/2009/10/07/Our-Biggest-Enemy-Isne28099t-Developers-Who-Refuse-To-Move-Forward-It-is-Developers-Who-Pretend-To-Move-Forward.aspx에서 변경) 한 후 등록 : 나는 다음과 같은 노력
Bind<KernelResolver>().ToSelf()
아직 커널이 null을 ... 난 그냥 몇 가지 예를 볼 필요가 있지만, 나는 어떤을 찾을 수 없습니다 또는 내가 혼란스러워서 내가 뭘 찾고 있는지 모르겠다. \
어떤 도움을 많이 받으실 수 있습니다!
"ASP.Net의 IoC 컨테이너 통합 지점은 일반적으로 컨트롤러 팩토리의 책임을 대신합니다." - 엄청난 일들이 정리됩니다. 내가 성취하려고 시도한 것은 마스터 페이지를 포함하여 컨트롤러를 통해 전달되지 않고 자동으로 모든 페이지에서 내 구성 설정을 사용할 수있게하는 것이 었습니다. 그래서 컨트롤러를 통해 모든 모델을 내 모델에 전달해야합니다. 나는 나무처럼 상상하고, 꼭대기에있는 컨트롤러와 주입은 필요에 따라 아래쪽으로 흘러 간다. – DennyFerra
그리고 분명히 말하자면, DI는 검사 점과 같았고 응용 프로그램의 모든 인스턴스는이 "검사 점"을 통과하여 필요한 시점에 객체를 검사하고 주입하는 것이 었습니다. – DennyFerra
나는 물체가 흐르면서 "위쪽"에서 컨트롤러를 보는 것이 흐름을 시각화하는 좋은 방법이라고 생각합니다. 이제 당신이하려고했던 것을 이해합니다. 이것은 정말로 논리적입니다. 모든 페이지에서 공유하려는 설정의 종류와 해당 설정이 응용 프로그램의 동작 (또는 기타)을 변경하는 방법에 대해 생각할 수 있습니다. 아마도 그것은 모델에 적용될 수 있습니까? –