首页 > 解决方案 > 主项目未调用参考项目自定义渲染器

问题描述

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

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

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

解决方案结构:

共享项目结构(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

安卓

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

}

标签: xamarinxamarin.formsxamarin.androidxamarin.ios

解决方案


我遇到了同样的问题,即没有调用来自外部程序集的自定义渲染器。我从未深入调查过,但似乎它与代码优化有关。

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

像这样:

集会

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

项目

protected override void OnCreate(Bundle bundle)
{ 
   base.OnCreate(bundle); 
   CoreUI.Init(); // Initialisation of CoreUI
}

推荐阅读