Xamarin - 使用便携式 Class 库是强制性的方式吗?

Xamarin - Using Portable Class Libraries a mandatory way to go?

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

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

我的发现是:

问题:

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

其次:如果 PCL 更符合您的需求,您完全可以不使用。除了 PCL 之外,您还可以使用 Shared Projects 或将公共库项目中的文件链接到每个特定于平台的项目中。

但根据我的个人经验,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());