Ninject로 WPF 애플리케이션을 개발하면서 분석 한 코드에는 한 번만 있어야하는 컬렉션이 있습니다.컬렉션을 Ninject에 바인딩합니다.
예를 들어, 메인 윈도우는 브라우저의 탭과 같은 프로젝트 탭의 내부 목록으로 구성됩니다. 메인 윈도우의 뷰 모델은이 프로퍼티 ObservableCollection<ProjectViewModel>
을 포함하고 있습니다. 내 생각은 ProjectViewModel의 ObservableCollection이 하나뿐입니다. Ninject와 싱글 톤 같은 타입을 바인딩하면 어떻게됩니까?
그래서 나는 ...
if (ViewModelBase.IsInDesignModeStatic) //pure WPF design mode check looks
//differently (this is MVVM Light)
{
kernel.Bind<ObservableCollection<Project>>().ToMethod((c) =>
{
return new ObservableCollection<Project>() { new Project("Lorem", "Ipsum") };
}
}
else
{
kernel.Bind<ObservableCollection<Project>>()
//.ToSelf() <-- ToSelf() does not work
.ToMethod((c) =>
{
return new ObservableCollection<Project>();
}).InSingletonScope();
}
을 이런 식으로 뭔가를 썼다 그리고 그것은 작품! 디자인 모드에서 실제로 "Lorem"과 "Ipsum"을보고 실행 중일 때 코드는 기본보기 모델의 컬렉션이 비어있는 상태에서 예상대로 작동하는 것 같습니다. 그리고 코드는 꽤 멋지고 읽기 쉽습니다.
하지만 의심스럽고 의심 스럽습니다. 클래스 컬렉션이 특정 구현에 바인딩되어있는 유사한 코드의 예를 찾을 수 없어서 정말 더럽고 나쁜 것을하고 있다고 느낍니다. 그러나 나는 충분히 조사하지 않았을지도 모른다.
Ninject에서 일부 클래스의 컬렉션을 바인딩하는 것이 좋습니까? 예기치 않은 문제가 발생할 수 있습니까?
'IsInDesignModeStatic' huh? * 정적? * 실제로 정적이라는 것을 나타 내기 위해 "정적"이라는 단어를 정적 메서드 이름에 넣지 않았습니까? – Will
MVVM Light 속성입니다. – Mirek
. 내 말은, 진지하게. – Will