如何从 iOS AppDelegate.cs 中的方法访问共享项目数据对象?
How to access a shared project data object from a method in iOS AppDelegate.cs?
我正在尝试通过 iOS AppDelegate.cs 方法从我的共享项目传递一些数据值以供访问。我不想在这里讨论太多细节,因为我不想限制这个问题的范围。但是该方法可以在任何时候调用并用于获取有关应用程序的状态信息,例如isLoggedIn 等
我们正在使用 GalaSoft.MvvmLight.Ioc.SimpleIoc
并有一个 CustomViewModelbase,但这可能不太相关。
这些值主要是我们 CustomViewModelbase
的一部分,我想我可以在 App.Xaml.cs 上创建某种全局对象,它可以在 AppDelegate.cs
中访问
这是我的...
using GalaSoft.MvvmLight.Ioc;
using ourapp.DTO;
using ourapp.Interfaces;
using ourapp.ViewModels;
namespace ourapp.Helpers
{
public class UITestingHelper : CustomViewModelBase, IUITestingHelper
{
[PreferredConstructor]
public UITestingHelper(
ICustomNavigationService navigationService,
IApiClient apiClient,
IDependencyService dependencyService)
: base(
navigationService,
apiClient,
dependencyService)
{
}
//
UITestingBackdoor _status;
public UITestingBackdoor Status
{
get
{
//var vm = (CustomViewModelBase)App.ViewModelLocator.Resolve(
// typeof(CustomViewModelBase));
_status = new UITestingBackdoor()
{
WillShowAccountPopup = base.HasMoreThanOneAccount,
AppUpdateAvailable = base.AppUpdateAvailable,
IsLoggedIn = App.IsLoggedIn,
IsConnected = App.Connectivity.IsConnected,
};
return _status;
}
}
public string GetAppStatus()
{
string json = Newtonsoft.Json.JsonConvert
.SerializeObject(Status);
return json;
}
}
}
这是我的 AppDelegate.cs 方法...
[Export("UITestBackDoor:")]
public NSString UITestBackDoor(NSString value)
{
var status = App.UITestingStatus.GetAppStatus();
return (NSString)status;
}
但是,该对象基本上是一个视图模型,它拥有自己的权利,并且有依赖注入来初始化它。但是,它没有针对特定视图注册,因此无法解析。
我的确切问题是,虽然我的 CustomViewModelbase 上的 属性 正在设置它的值。当在我的全局对象中访问这些值时,该值为空。
我认为这与依赖注入有关。但是,我开始认为必须有一个更简单的解决方案?
是的,我也想为 Android 做这件事,但首先要做的是第一件事。
在App.cs中创建一个全局变量,在构造函数中初始化它。
Return 来自 public 方法的值并在 iOS 项目中访问它。
表格App.cs
UITestingHelper helper;
public string GetAppStatus()
{
return helper.UITestingStatus.GetAppStatus;
}
iOS AppDelegate.cs
public NSString UITestBackDoor(NSString value)
{
return (App.Current as App).GetAppStatus();
}
我正在尝试通过 iOS AppDelegate.cs 方法从我的共享项目传递一些数据值以供访问。我不想在这里讨论太多细节,因为我不想限制这个问题的范围。但是该方法可以在任何时候调用并用于获取有关应用程序的状态信息,例如isLoggedIn 等
我们正在使用 GalaSoft.MvvmLight.Ioc.SimpleIoc
并有一个 CustomViewModelbase,但这可能不太相关。
这些值主要是我们 CustomViewModelbase
的一部分,我想我可以在 App.Xaml.cs 上创建某种全局对象,它可以在 AppDelegate.cs
这是我的...
using GalaSoft.MvvmLight.Ioc;
using ourapp.DTO;
using ourapp.Interfaces;
using ourapp.ViewModels;
namespace ourapp.Helpers
{
public class UITestingHelper : CustomViewModelBase, IUITestingHelper
{
[PreferredConstructor]
public UITestingHelper(
ICustomNavigationService navigationService,
IApiClient apiClient,
IDependencyService dependencyService)
: base(
navigationService,
apiClient,
dependencyService)
{
}
//
UITestingBackdoor _status;
public UITestingBackdoor Status
{
get
{
//var vm = (CustomViewModelBase)App.ViewModelLocator.Resolve(
// typeof(CustomViewModelBase));
_status = new UITestingBackdoor()
{
WillShowAccountPopup = base.HasMoreThanOneAccount,
AppUpdateAvailable = base.AppUpdateAvailable,
IsLoggedIn = App.IsLoggedIn,
IsConnected = App.Connectivity.IsConnected,
};
return _status;
}
}
public string GetAppStatus()
{
string json = Newtonsoft.Json.JsonConvert
.SerializeObject(Status);
return json;
}
}
}
这是我的 AppDelegate.cs 方法...
[Export("UITestBackDoor:")]
public NSString UITestBackDoor(NSString value)
{
var status = App.UITestingStatus.GetAppStatus();
return (NSString)status;
}
但是,该对象基本上是一个视图模型,它拥有自己的权利,并且有依赖注入来初始化它。但是,它没有针对特定视图注册,因此无法解析。
我的确切问题是,虽然我的 CustomViewModelbase 上的 属性 正在设置它的值。当在我的全局对象中访问这些值时,该值为空。
我认为这与依赖注入有关。但是,我开始认为必须有一个更简单的解决方案?
是的,我也想为 Android 做这件事,但首先要做的是第一件事。
在App.cs中创建一个全局变量,在构造函数中初始化它。
Return 来自 public 方法的值并在 iOS 项目中访问它。
表格App.cs
UITestingHelper helper;
public string GetAppStatus()
{
return helper.UITestingStatus.GetAppStatus;
}
iOS AppDelegate.cs
public NSString UITestBackDoor(NSString value)
{
return (App.Current as App).GetAppStatus();
}