Xamarin.forms 使用包装器时,Xamarin DependencyService Get()方法为NULL

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

我已经创建了DependencyServiceWrapper,以便可以在单元测试中按照此处的指南替换它:

我的包装器位于我的可移植项目中,如下所示

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的一个属性直接工作正常,只是当我将它包装到另一个类中时就不行了。