【问题标题】:How do your write Xamarin platform specific code in a .net standard library?您如何在 .net 标准库中编写 Xamarin 平台特定代码?
【发布时间】:2023-03-27 12:36:01
【问题描述】:

您如何在 .net 标准库中编写 Xamarin 平台特定代码?

我想在 .Net 标准库中使用像 Xamarin.Forms.Platform.iOS 这样的命名空间..

用例:我想为我的应用程序开发一个 .net 库,其中包括适用于各种平台的视频播放器。此视频播放器还必须与 .net 库中的其他代码交互。

或者是我需要使用共享项目或可移植库的答案?

【问题讨论】:

  • 根据定义,您不能在跨平台库中包含特定于平台的代码。跨平台库只能包含跨平台代码。我建议您在 github 上查看一些常见的 Xamarin 插件,了解它们是如何构建的 - 大多数都会有一个通用的共享库以及特定于平台的库。
  • @magicandre1981 谢谢我看到并阅读了它。

标签: xamarin xamarin.forms .net-standard


【解决方案1】:

您不应包含特定于平台的代码或使用您在 .NET 标准库中提到的命名空间,原因是 .NET 只是一个运行时环境。

它不是您在 iOS 或 Android 上使用的主要运行时环境。这些平台使用 Mono - 而不是 .NET。查看thisthis 以了解其结构的更多详细信息。

如果您需要从 .NET Standard 项目中执行与特定于平台的行为相关的某些内容,请使用依赖注入或自定义渲染器。

【讨论】:

  • 所以我想我会为我的平台唯一代码创建一个平台项目 - 然后定义自定义渲染器。然后我可以将它们包含在我的 Xamarin.Forms 代码中作为 .Net 库的一部分?
  • 是和不是。取决于你想实现什么。如果您尝试创建自己的基于某些默认控件或组件的控件或组件,我建议您使用自定义渲染器(例如,您想要创建与默认条目相比具有一些扩展功能和设计的 CustomEntry)。但是,如果您想扩展或访问特定平台中的某些功能,那么您可以使用依赖注入(例如,您希望在用户单击应用程序中的某个按钮时动态打开蓝牙,并且之前要求他授予权限.. .)
猜你喜欢
  • 2020-06-22
  • 1970-01-01
  • 2021-09-28
  • 1970-01-01
  • 1970-01-01
  • 2017-03-19
  • 2019-05-08
  • 2021-03-08
相关资源
最近更新 更多