【发布时间】: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