我创建了一个Xamarin.Forms项目/库。项目/库包含页面,视图,渲染器和其他可共享组件。
然后我创建了我的主项目,它将引用共享项目。我将每个项目(shared,android,ios)添加为现有的解决方案项目。
问题是当我尝试在我的MainShareProject中使用ShareProject的自定义渲染器时,不会调用SharedProjectAndroid和SharedProjectiOS中的实现。当我通过DependencyService在MainShareProject中调用ISomeService时,它为null
解决方案结构
共享项目结构(SharedProject的目的是在其他项目中重用它)
ShareProject(NET标准库)
SharedProjectAndroid(参考ShareProject; Xamarin.Android库)
ShareProjectiOS(参考ShareProject; Xamarin.iOS库)
主要项目结构
MainShareProject(参考ShareProject)
MainProjectAndroid(参考ShareProject和ShareProjectAndroid)
MainProjectiOS(参考ShareProject和ShareProjectAndroid)
var someService = DependencyService.Get<SharedProject.ISomeService>(); //returs null
Android的
[assembly: Dependency(typeof(SharedProjectiAndroid.SomeService))]
{
public class UserPreference : ISomeService
}
我正在解决同样的问题,即不调用外部程序集中的自定义渲染器。我从未深入研究,但似乎它与代码优化有某种关系。
对我来说,解决方案是从我的项目添加一个显式调用到外部程序集。
像这样:
部件
public static class CoreUI
{
public static void Init() { }
}
项目
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
CoreUI.Init(); // Initialisation of CoreUI
}