【问题标题】:Main project not calling reference project custom renderers主项目未调用参考项目自定义渲染器
【发布时间】:2019-03-06 22:11:01
【问题描述】:

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

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

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

解决方案结构:

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

安卓

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

}

【问题讨论】:

  • 您对项目结构的描述无法理解。您能否详细描述一下仅针对一个平台(即 Android)的项目结构?
  • 另外,你的注册应该指向实现类,比如“[assembly: Dependency(typeof(SharedProjectiAndroid.UserPreference))]”
  • “问题是当我尝试在 SharedProject 的主项目中使用自定义渲染器时,不会调用 SharedProjectAndroid 和 SharedProjectiOS 中的实现。尝试使用 DependencyService 时也是如此。”。这几乎是不可能的,你需要描述你在做什么。
  • 我用项目的结构更新了问题。

标签: xamarin xamarin.forms xamarin.android xamarin.ios


【解决方案1】:

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

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

像这样:

组装

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

项目

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

【讨论】:

  • Init() 里面是什么?
  • nothing ;) 您只需要在 SharedProject 中创建一个空的静态类并从您的应用程序中调用它。就是这样
猜你喜欢
  • 2015-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多