MVVM Light SimpleIoc을 사용하는 방법은 무엇입니까?
나는 엉망진창인 내 소프트웨어를 개조하고 있습니다.Messenger.Default(...)
작은 조각들
MVVM Light SimpleIoc 사용(일반적인 IoC 설명이 아님)을 알 수 있는 치트 시트가 있습니까?
단순한 옥석 시트:
ViewModelLocator에 모든 인터페이스 및 개체를 등록합니다.
class ViewModelLocator { static ViewModelLocator() { ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); if (ViewModelBase.IsInDesignModeStatic) { SimpleIoc.Default.Register<IDataService, Design.DesignDataService>(); } else { SimpleIoc.Default.Register<IDataService, DataService>(); } SimpleIoc.Default.Register<MainViewModel>(); SimpleIoc.Default.Register<SecondViewModel>(); } public MainViewModel Main { get { return ServiceLocator.Current.GetInstance<MainViewModel>(); } } }
모든 개체는 기본적으로 싱글톤입니다.단일 개체가 아닌 개체를 확인하려면 GetInstance 호출에 고유한 값을 전달해야 합니다.
SimpleIoc.Default.GetInstance<MainViewModel>(Guid.NewGuid().ToString());
인터페이스에 대해 클래스를 등록하는 방법
SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();
인터페이스에 대해 구체적인 개체를 등록하는 방법
SimpleIoc.Default.Register<IDataService>(myObject);
콘크리트 유형 등록하기
SimpleIoc.Default.Register<MainViewModel>();
인터페이스에서 개체를 확인하는 방법
SimpleIoc.Default.GetInstance<IDataService>();
개체를 직접 확인하려면(구축 및 종속성 확인):
SimpleIoc.Default.GetInstance<MainViewModel>();
MVVM을 사용하면 디자인 타임 데이터를 매우 쉽게 처리할 수 있습니다.
if (ViewModelBase.IsInDesignModeStatic) { SimpleIoc.Default.Register<IDataService, Design.DesignDataService>(); } else { SimpleIoc.Default.Register<IDataService, DataService>(); }
디자인 타임 모드에 있는 경우 디자인 타임 서비스가 자동으로 등록되므로 VS 디자이너에서 작업할 때 뷰 모델과 뷰에 데이터를 저장하기가 매우 쉽습니다.
언급URL : https://stackoverflow.com/questions/13795596/how-to-use-mvvmlight-simpleioc
'programing' 카테고리의 다른 글
모든 풀에서 모든 것을 덮어쓰도록 깃 풀을 강제하려면 어떻게 해야 합니까? (0) | 2023.06.23 |
---|---|
서비스 작업자는 웹 앱 매니페스트의 사전이어야 합니다. (0) | 2023.06.18 |
Javascript date to sql date 객체 (0) | 2023.06.18 |
8080에서 수신 중인 Oracle XE 구성 요소를 비활성화하는 방법은 무엇입니까? (0) | 2023.06.18 |
Excel이 워크시트_Change before Workbook_Before Save를 실행하지 않도록 하는 방법은 무엇입니까? (0) | 2023.06.18 |