我在我的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。但是当我下次打开页面时。它显示了我上次存储的相同用户名值。
我如何重新开始它。
答案 0 :(得分:2)
取决于ViewModel
如何在Autofac
注册,您可能会遇到不同的结果。如果您将范围定义为SingleInstance()
(单个实例范围),则容器将在每个Resolve
上解析相同的实例。如果您的目的是在每个Resolve
(每个依赖范围)上获取一个新实例,则不应定义任何生命周期范围,因此只需删除.SingleInstance()
:
builder.RegisterType<LoadRouteViewModel>().As<ILoadRouteViewModel>();
您可以阅读有关生命范围here的更多信息。
P.S。:除此之外,最好将注入的实例标记为readonly
。