Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# UWP/MVVMlight:替换过时的ServiceLocator_C#_Mvvm Light - Fatal编程技术网

C# UWP/MVVMlight:替换过时的ServiceLocator

C# UWP/MVVMlight:替换过时的ServiceLocator,c#,mvvm-light,C#,Mvvm Light,我正在更新我的应用程序,现在我使用MVVMLight 5.3.0 viewmodellocator在测线处崩溃 ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); 我读到最新版本的MVVMLight,ServiceLocator类被删除,Microsoft.Practices.ServiceLocation被删除 那么,我可以/必须做些什么才能让应用程序再次工作? 感谢您在介绍MVVMLight标准库版本的博文中删除以下

我正在更新我的应用程序,现在我使用MVVMLight 5.3.0 viewmodellocator在测线处崩溃

ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
我读到最新版本的MVVMLight,ServiceLocator类被删除,Microsoft.Practices.ServiceLocation被删除

那么,我可以/必须做些什么才能让应用程序再次工作?
感谢您在介绍MVVMLight标准库版本的博文中删除以下代码行:

// OLD ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
无论何时使用ServiceLocator.Current,请改用SimpleIoc.Default。比如说

// OLD var nav = ServiceLocator.Current.GetInstance<INavigationService>();
// NEW
var nav = SimpleIoc.Default.GetInstance<INavigationService>();
//OLD var nav=ServiceLocator.Current.GetInstance();
//新的
var nav=SimpleIoc.Default.GetInstance();

从介绍MVVMLight标准库版本的博文中,删除以下代码行:

// OLD ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
无论何时使用ServiceLocator.Current,请改用SimpleIoc.Default。比如说

// OLD var nav = ServiceLocator.Current.GetInstance<INavigationService>();
// NEW
var nav = SimpleIoc.Default.GetInstance<INavigationService>();
//OLD var nav=ServiceLocator.Current.GetInstance();
//新的
var nav=SimpleIoc.Default.GetInstance();

我总是以这种方式使用MVVMLight,而不为
ServiceLocator
设置定位器提供程序。通常,视图模型定位器应如下所示:

public class ViewModelLocator
{
    public ViewModelLocator()
    {
        SimpleIoc.Default.Register<IDataProvider, SQLiteDataProvider>();
        SimpleIoc.Default.Register<IDialogService, DialogService>();
        SimpleIoc.Default.Register(GetNavigationService);
        SimpleIoc.Default.Register<MainViewModel>();
        SimpleIoc.Default.Register<MessageViewModel>();
        SimpleIoc.Default.Register<SearchViewModel>();
        SimpleIoc.Default.Register<SettingViewModel>();
        ...
    }

    public MainViewModel MainViewModel => SimpleIoc.Default.GetInstance<MainViewModel>(Guid.NewGuid().ToString());
    public MessageViewModel MessageViewModel => SimpleIoc.Default.GetInstance<MessageViewModel>(Guid.NewGuid().ToString());
    public SearchViewModel SearchViewModel => SimpleIoc.Default.GetInstance<SearchViewModel>(Guid.NewGuid().ToString());
    public SettingViewModel SettingViewModel => SimpleIoc.Default.GetInstance<SettingViewModel>(Guid.NewGuid().ToString());
    ...

    public INavigationService GetNavigationService()
    {
        var navigationService = new NavigationService();
        navigationService.Configure(Pages.MainView.ToString(), typeof(MainPage));
        navigationService.Configure(Pages.MessageView.ToString(), typeof(MessagePage));
        navigationService.Configure(Pages.SearchView.ToString(), typeof(SearchPage));
        navigationService.Configure(Pages.SettingView.ToString(), typeof(SettingPage));
        ...
        return navigationService;
    }
}
公共类ViewModelLocator
{
公共ViewModelLocator()
{
SimpleIoc.Default.Register();
SimpleIoc.Default.Register();
SimpleIoc.Default.Register(GetNavigationService);
SimpleIoc.Default.Register();
SimpleIoc.Default.Register();
SimpleIoc.Default.Register();
SimpleIoc.Default.Register();
...
}
public MainViewModel MainViewModel=>SimpleIoc.Default.GetInstance(Guid.NewGuid().ToString());
public MessageViewModel MessageViewModel=>SimpleIoc.Default.GetInstance(Guid.NewGuid().ToString());
public SearchViewModel SearchViewModel=>SimpleIoc.Default.GetInstance(Guid.NewGuid().ToString());
public SettingViewModel SettingViewModel=>SimpleIoc.Default.GetInstance(Guid.NewGuid().ToString());
...
公共INavigationService GetNavigationService()
{
var navigationService=新的navigationService();
navigationService.Configure(Pages.MainView.ToString(),typeof(MainPage));
配置(Pages.MessageView.ToString(),typeof(MessagePage));
navigationService.Configure(Pages.SearchView.ToString(),typeof(SearchPage));
配置(Pages.SettingView.ToString(),typeof(SettingPage));
...
返回导航服务;
}
}

我总是以这种方式使用MVVMLight,而不为
ServiceLocator
设置定位器提供程序。通常,视图模型定位器应如下所示:

public class ViewModelLocator
{
    public ViewModelLocator()
    {
        SimpleIoc.Default.Register<IDataProvider, SQLiteDataProvider>();
        SimpleIoc.Default.Register<IDialogService, DialogService>();
        SimpleIoc.Default.Register(GetNavigationService);
        SimpleIoc.Default.Register<MainViewModel>();
        SimpleIoc.Default.Register<MessageViewModel>();
        SimpleIoc.Default.Register<SearchViewModel>();
        SimpleIoc.Default.Register<SettingViewModel>();
        ...
    }

    public MainViewModel MainViewModel => SimpleIoc.Default.GetInstance<MainViewModel>(Guid.NewGuid().ToString());
    public MessageViewModel MessageViewModel => SimpleIoc.Default.GetInstance<MessageViewModel>(Guid.NewGuid().ToString());
    public SearchViewModel SearchViewModel => SimpleIoc.Default.GetInstance<SearchViewModel>(Guid.NewGuid().ToString());
    public SettingViewModel SettingViewModel => SimpleIoc.Default.GetInstance<SettingViewModel>(Guid.NewGuid().ToString());
    ...

    public INavigationService GetNavigationService()
    {
        var navigationService = new NavigationService();
        navigationService.Configure(Pages.MainView.ToString(), typeof(MainPage));
        navigationService.Configure(Pages.MessageView.ToString(), typeof(MessagePage));
        navigationService.Configure(Pages.SearchView.ToString(), typeof(SearchPage));
        navigationService.Configure(Pages.SettingView.ToString(), typeof(SettingPage));
        ...
        return navigationService;
    }
}
公共类ViewModelLocator
{
公共ViewModelLocator()
{
SimpleIoc.Default.Register();
SimpleIoc.Default.Register();
SimpleIoc.Default.Register(GetNavigationService);
SimpleIoc.Default.Register();
SimpleIoc.Default.Register();
SimpleIoc.Default.Register();
SimpleIoc.Default.Register();
...
}
public MainViewModel MainViewModel=>SimpleIoc.Default.GetInstance(Guid.NewGuid().ToString());
public MessageViewModel MessageViewModel=>SimpleIoc.Default.GetInstance(Guid.NewGuid().ToString());
public SearchViewModel SearchViewModel=>SimpleIoc.Default.GetInstance(Guid.NewGuid().ToString());
public SettingViewModel SettingViewModel=>SimpleIoc.Default.GetInstance(Guid.NewGuid().ToString());
...
公共INavigationService GetNavigationService()
{
var navigationService=新的navigationService();
navigationService.Configure(Pages.MainView.ToString(),typeof(MainPage));
配置(Pages.MessageView.ToString(),typeof(MessagePage));
navigationService.Configure(Pages.SearchView.ToString(),typeof(SearchPage));
配置(Pages.SettingView.ToString(),typeof(SettingPage));
...
返回导航服务;
}
}

我已重新打开到另一页,因为我的评论已被删除。我已重新打开到另一页,因为我的评论已被删除