Как повторно инициализировать объект модели представления в инъекции Dependeny в формах xamarin? - PullRequest
0 голосов
/ 08 июня 2018

Я использую инъекцию зависимости Autofac в моем проекте форм xamarin.Я создал конструктор и его viewmodel.А затем зарегистрируйте его в контейнере Autofac.Сначала работает нормально.Но когда пользователь заходит на страницу, он показывает те же значения, которые я сохранял в прошлый раз в свойствах.Я хочу повторно инициализировать объект viewmodel.Вот мой код:

Интерфейс:

     public ILoadViewModel : INotifyPropertyChanged
     {
     }

ViewModel:

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

Сначала он инициализируетсямодель представления.Но когда я открою страницу в следующий раз.Он показывает то же значение имени пользователя, которое я сохранял в прошлый раз.

Как я могу переустановить его.

1 Ответ

0 голосов
/ 08 июня 2018

Зависит от того, как ViewModel зарегистрирован с Autofac, у вас могут быть другие результаты.Если вы определили область действия как SingleInstance() (область действия одного экземпляра), тогда контейнер будет обрабатывать один и тот же экземпляр на каждом Resolve.Если вы намереваетесь получить новый экземпляр для каждой Resolve (для каждой области зависимости), вам не следует определять какую-либо область действия на весь срок службы, поэтому просто удалите .SingleInstance():

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

. Вы можете прочитать больше овремя жизни здесь .

PS: Кроме того, хорошей практикой является пометить внедренные экземпляры как readonly.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...