主项目不调用参考项目自定义渲染器

问题描述 投票:0回答:1

我创建了一个Xamarin.Forms项目/库。项目/库包含页面,视图,渲染器和其他可共享组件。

然后我创建了我的主项目,它将引用共享项目。我将每个项目(shared,android,ios)添加为现有的解决方案项目。

问题是当我尝试在我的MainShareProject中使用ShareProject的自定义渲染器时,不会调用SharedProjectAndroid和SharedProjectiOS中的实现。当我通过DependencyService在MainShareProject中调用ISomeService时,它为null

解决方案结构

共享项目结构(SharedProject的目的是在其他项目中重用它)

ShareProject(NET标准库)

  • 自定义渲染器
  • ISomeService

SharedProjectAndroid(参考ShareProject; Xamarin.Android库)

  • 自定义渲染器实现
  • ISomeServiceImpl

ShareProjectiOS(参考ShareProject; Xamarin.iOS库)

  • 自定义渲染器实现
  • ISomeServiceImpl

主要项目结构

MainShareProject(参考ShareProject)

  • 使用自定义渲染器(在ShareProject中调用自定义渲染器构造函数,但不调用其实现
  • 通过DependencyService使用ISomeService(返回null)

MainProjectAndroid(参考ShareProject和ShareProjectAndroid)

MainProjectiOS(参考ShareProject和ShareProjectAndroid)

var someService = DependencyService.Get<SharedProject.ISomeService>(); //returs null

Android的

[assembly: Dependency(typeof(SharedProjectiAndroid.SomeService))]
{
    public class UserPreference : ISomeService

}
xamarin xamarin.forms xamarin.android xamarin.ios
1个回答
2
投票

我正在解决同样的问题,即不调用外部程序集中的自定义渲染器。我从未深入研究,但似乎它与代码优化有某种关系。

对我来说,解决方案是从我的项目添加一个显式调用到外部程序集。

像这样:

部件

public static class CoreUI
{
   public static void Init() { }        
}

项目

protected override void OnCreate(Bundle bundle)
{ 
   base.OnCreate(bundle); 
   CoreUI.Init(); // Initialisation of CoreUI
}
© www.soinside.com 2019 - 2024. All rights reserved.