如何在Xamarin表单中重新初始化Dependeny注入视图模型的对象?

时间:2018-06-08 05:06:38

标签: dependency-injection xamarin.forms autofac

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

接口:

     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>();

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

我如何重新开始它。

1 个答案:

答案 0 :(得分:2)

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

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

您可以阅读有关生命范围here的更多信息。

P.S。:除此之外,最好将注入的实例标记为readonly