我有一個LoginService
及其在MvvmCross(Mvx)插件中定義的接口。MvvmCross語法消耗插件中定義的服務以及應用程序內該服務的生命週期
我MVX應用的核心PCL消耗這個插件使用App.cs
以這樣的方式來註冊它
CreatableTypes(typeof(LoginService).GetTypeInfo().Assembly)
.EndingWith("Service")
.AsInterfaces()
.RegisterAsLazySingleton();
然後使用一個CustomAppStart
類來啓動應用程序,以確定哪些視圖模型與啓動應用程序:
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()
當我提出要求,我會得到相同的 login服務的實例,但 該實例的生命週期是什麼?一旦我在CustomAppStart中請求它,那麼該實例的狀態 只是留在內存中供我調用和使用,或者當我的 ViewModels之一請求在其 構造函數中的同一ILoginService實例時,Mvx奇蹟般地保存並重新水化其狀態?
有沒有這樣做的方式,沒有Core在開發時需要了解其他程序集。 由於接口位於Core程序集中,因此我需要從服務程序集中引用Core,這意味着我不能從Core中引用服務,除非創建新的程序集,僅用於接口。 – JonathanPeel