是DependencyService替代自定义渲染器

时间:2019-02-26 12:08:54

标签: xamarin xamarin.forms custom-renderer

DependencyService相比,我对CustomRenderer有点困惑。

我们可以使用DependencyService代替CustomRenderer吗?我们在哪里可以使用DependencyService

1 个答案:

答案 0 :(得分:2)

TL / DR:不,它们都有不同的用例,尽管它们都提供了访问目标系统功能的方法。

<皮肤>渲染器的概念直接与用户界面元素联系在一起。基本上,每种Xamarin.Forms控件都有一个自定义渲染器,该渲染器将控件的渲染委托给系统UI框架。通常,它将Xamarin.Forms控件映射到本机UI元素。

依赖(通过依赖服务解决)更像是平台特定功能的一般概念(实际上,它不限于平台特定的实现)。您定义一个抽象功能的接口,为此将提供平台特定的实现。可以使用DependencyService(其中DependencyAttribute必须是您的接口类型)在运行时解析实现此接口并通过DependencyService.Get<T>()公开给T的特定于平台的类。从Get检索的对象可以使用,而无需知道哪个类确切地实现了该接口。这是一种非常基本的依赖项注入(嗯,不是真的,但是有点),可以用于需要平台特定实现的任何功能,而不仅用于UI问题。