Как использовать MVVMLight SimpleIoc? - программирование
Подтвердить что ты не робот

Как использовать MVVMLight SimpleIoc?

Я обновляю свое программное обеспечение с беспорядочными битами Messenger.Default(...).

Есть ли чит-лист для ознакомления с MVVMLight SimpleIoc (не общее описание IoC)?

4b9b3361

Ответ 1

Лист шпалы SimpleIoc:

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.

Надеюсь, что это поможет.