我LoginService
在 MvvmCross (Mvx) 插件中定义了一个及其接口。
我的 Mvx 应用程序的核心 PCL 使用这个插件App.cs
来注册它,如下所示:
CreatableTypes(typeof(LoginService).GetTypeInfo().Assembly)
.EndingWith("Service")
.AsInterfaces()
.RegisterAsLazySingleton();
然后它使用一个CustomAppStart
类来启动应用程序以确定使用哪个 ViewModel 来启动应用程序:
RegisterAppStart(new CustomAppStart(Mvx.Resolve<ILoginService>()));
将 CustomAppStart 定义为:
public CustomAppStart(ILoginService loginService)
{
_loginService = loginService;
}
public void Start(object hint = null)
{
if (!_loginService.IsLoggedIn)
{
ShowViewModel<LoginViewModel>();
}
else
{
ShowViewModel<HomeViewModel>();
}
}
两部分问题:
我是否使用正确的语法以及
CreatableTypes
插件 中定义的语法?RegisterAppStart
LoginService
我知道通过使用
RegisterAsLazySingleton()
我会在请求时获得 SAME LoginService 实例,但是该实例的生命周期是多少?一旦我在 CustomAppStart 中请求它,该实例的状态是否只保留在内存中供我调用和使用,或者当我的一个 ViewModels 在其构造函数中请求相同的 ILoginService 实例时,Mvx 是否神奇地保存并重新水化其状态?