gpt4 book ai didi

Xamarin - 使用可移植类库是强制性的方法吗?

转载 作者:行者123 更新时间:2023-12-01 22:30:49 25 4
gpt4 key购买 nike

最近我被要求为一个新应用设置设计,该应用需要使用 Xamarin 构建。该团队已经为 Android、iOS 和 Windows Phone 创建了一个演示应用程序。所以基本上这个演示版本需要转换/重构为一个适当的可维护产品。

在查看当前在 DEMO 应用程序中实现的代码时,我发现使用了一些第三方库,这些库不能作为 PCL 使用。这意味着我无法使用 PCL 构建我的应用程序,除非我可以将此第三方库移植到 PCL 中。

我的发现是:

  • 我们从这个第三方库中使用的功能在所有 3 个平台上都能正常工作
  • 我找不到任何阻止的理由来不应该使用普通类库

问题:

  • 是否有任何阻塞原因导致我无法使用普通类库?
  • 公共(public)应用商店会接受这些应用吗?还是这根本不是问题?
  • 如果没有..你能给一些建议,特别注意使用普通的类库吗
  • 如果有...我如何将第三方库移植到 PCL 或是否有任何其他解决方法?

最佳答案

首先:公共(public)应用商店不关心您的应用的内部结构,只要它遵循他们的指南即可。这是 Xamarin 会处理的事情,因此从编译器中删除的所有内容都没有问题。

第二:如果 PCL 能更好地满足您的需求,您完全可以不使用它。除了 PCL,您还可以使用 Shared Projects或者只是将公共(public)库项目中的文件链接到每个特定于平台的项目中。

但根据我的个人经验,PCL 是确保您编写的代码和您使用的工具真正适用于每个平台的好方法,因此您不必担心事后出现意外情况。借助 PCL 配置文件 78,对 LINQ 等内容的支持非常好。

此外,您还可以在共享的 PCL 代码中使用外观,隐藏具体的实现,然后单独为每个平台提供。

它可能看起来像:

(PCL)

public interface ILogger
{
void Log(string message);
}

public static class SharedUtilities
{
public static ILogger Logger { get; private set; }

public static void SetUp(ILogger logger)
{
Logger = logger;
}
}

// Now Use it from everywhere in your code:
SharedUtilities.Logger.Log("Hello PCL!");

例如,在您的 iOS 应用中:

public class IOSLogger : ILogger
{
public void Log(string message)
{
// Make use of a native logging library or whatever you want
}
}

// AppDelegate:
SharedUtilities.SetUp(new IOSLogger());

关于Xamarin - 使用可移植类库是强制性的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29636693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com