Xamarin.forms 使用包装器时,Xamarin DependencyService Get()方法为NULL
我已经创建了DependencyServiceWrapper,以便可以在单元测试中按照此处的指南替换它: 我的包装器位于我的可移植项目中,如下所示Xamarin.forms 使用包装器时,Xamarin DependencyService Get()方法为NULL,xamarin.forms,Xamarin.forms,我已经创建了DependencyServiceWrapper,以便可以在单元测试中按照此处的指南替换它: 我的包装器位于我的可移植项目中,如下所示 public class DependencyServiceWrapper : IDependencyService { public T Get<T>() where T : class { // The wrapper will simply pass everythin
public class DependencyServiceWrapper : IDependencyService
{
public T Get<T>() where T : class
{
// The wrapper will simply pass everything through to the real Xamarin.Forms DependencyService class when not unit testing
return DependencyService.Get<T>();
}
}
public类DependencyServiceWrapper:IDependencyService
{
公共T Get(),其中T:class
{
//当不进行单元测试时,包装器只需将所有内容传递给真正的Xamarin.Forms DependencyService类
返回DependencyService.Get();
}
}
然后,我的viewModel在构造函数中简单地将其更新,如下所示
public TasksListViewModel(Page page) : this(page, new DependencyServiceWrapper())
{
}
public TasksListViewModel(Page page, IDependencyService dependencyService)
{
this.page = page;
this.connectivityService = dependencyService.Get<IConnectivityService>();
this.taskRepo = dependencyService.Get<ITaskRepository>(); // NULL HERE
this.RowClicked = new Command<Guid>(OnTaskSelected); // NULL HERE
this.RefreshList = new Command(RefreshTasks);
}
public TasksListViewModel(第页):此(第页,新的DependencyServiceWrapper())
{
}
公共任务列表视图模型(第页,IDependencyService dependencyService)
{
this.page=page;
this.connectivityService=dependencyService.Get();
this.taskRepo=dependencyService.Get();//此处为NULL
this.RowClicked=new命令(OnTaskSelected);//此处为NULL
this.RefreshList=新命令(refreshttasks);
}
以前在我的ViewModel中
public IConnectivityService ConnectivityService => DependencyService.Get<IConnectivityService>(); // Returns correct object (so I know it's registered correctly).
public-IConnectivityService-ConnectivityService=>DependencyService.Get();//返回正确的对象(因此我知道它已正确注册)。
有人能告诉我为什么我得到空值吗。当我调用wrapped服务(如上)时,我得到NULL,但是直接从ViewModel执行wrapped调用工作正常
谢谢,
David您所说的“有人能告诉我,如果我直接从ViewModel调用,那么包装的Get调用为什么会返回NULL?”是什么意思吗?
Get
呼叫在任何时候都有效吗?您确定已注册IConnectivityService
的实现吗?标准的DependencyService
工作正常吗?DependencyService作为ViewModel的一个属性直接工作正常,只是当我将它包装到另一个类中时就不行了。