programing

MVVM Light SimpleIoc을 사용하는 방법은 무엇입니까?

javajsp 2023. 6. 18. 12:11

MVVM Light SimpleIoc을 사용하는 방법은 무엇입니까?

나는 엉망진창인 내 소프트웨어를 개조하고 있습니다.Messenger.Default(...)작은 조각들

MVVM Light SimpleIoc 사용(일반적인 IoC 설명이 아님)을 알 수 있는 치트 시트가 있습니까?

단순한 옥석 시트:

  1. 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>();  
            } 
        }
    }
    
  2. 모든 개체는 기본적으로 싱글톤입니다.단일 개체가 아닌 개체를 확인하려면 GetInstance 호출에 고유한 값을 전달해야 합니다.

    SimpleIoc.Default.GetInstance<MainViewModel>(Guid.NewGuid().ToString());
    
  3. 인터페이스에 대해 클래스를 등록하는 방법

    SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();
    
  4. 인터페이스에 대해 구체적인 개체를 등록하는 방법

    SimpleIoc.Default.Register<IDataService>(myObject);
    
  5. 콘크리트 유형 등록하기

    SimpleIoc.Default.Register<MainViewModel>();
    
  6. 인터페이스에서 개체를 확인하는 방법

    SimpleIoc.Default.GetInstance<IDataService>();
    
  7. 개체를 직접 확인하려면(구축 및 종속성 확인):

    SimpleIoc.Default.GetInstance<MainViewModel>();
    
  8. 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