首页 > 解决方案 > 如何在 xamarin 形式的 Dependeny 注入中重新初始化视图模型的对象?

问题描述

我在我的 xamarin 表单项目中使用 Autofac 依赖注入。我创建了一个构造函数及其视图模型。然后将其注册到 Autofac 的容器中。起初它工作正常。但是当用户进入页面时,它显示的值与我上次在属性中保存的值相同。我想重新初始化视图模型的对象。这是我的代码:

界面:

     public ILoadViewModel : INotifyPropertyChanged
     {
     }

视图模型:

     public class LoadViewModel : ViewModelBase, ILoadViewModel
{
    private INavigationService navigationService;
    public string Username { get ; set ; }
    public LoadRouteViewModel(INavigationService navigationService)
    {
        this.navigationService = navigationService;

    }

Xaml.cs:

     viewModel = AppContainer.Container.Resolve<ILoadViewModel>();

首先它初始化视图模型。但是当我下次打开页面时。它显示了我上次存储的相同用户名值。

我怎样才能重新初始化它。

标签: dependency-injectionxamarin.formsautofac

解决方案


取决于如何向您ViewModel注册Autofac可能会遇到不同的结果。如果您将范围定义为SingleInstance()(单实例范围),则容器将每个Resolve. 如果您的意图是在每个(每个依赖范围)上获取一个新实例Resolve,则不应定义任何生命周期范围,因此只需删除.SingleInstance()

builder.RegisterType<LoadRouteViewModel>().As<ILoadRouteViewModel>();

您可以在此处阅读有关生命周期范围的更多信息。

PS:除此之外,将注入的实例标记为readonly.


推荐阅读