hwc*_*rwe 2 cross-platform xamarin.ios portable-class-library xamarin
最近我被要求为新应用程序设置设计,需要使用Xamarin构建.该团队已经为Android,iOS和Windows Phone创建了一个DEMO应用程序.因此,基本上这个演示版本需要转换/重构为适当的可维护产品.
在查看代码当前在DEMO应用程序中实现的内容时,我发现使用了一些不能用作PCL的第三方库.这意味着我无法使用PCL构建我的应用程序,除非我可以将此第三方库移植到PCL中.
我的发现是:
问题:
第一:公共应用程序商店不关心你的应用程序的内部,只要它遵循他们的指导方针.这就是Xamarin所关注的事情,因此从编译器中删除的所有东西都可以.
第二:如果能以更好的方式满足您的需求,那么不使用PCL就完全没问题了.除了PCL之外,您还可以使用共享项目或仅将公共库项目中的文件链接到每个特定于平台的项目中.
但根据我的个人经验,PCL是一种很好的方法,可以确保您编写的代码和您正在使用的工具确实在每个平台上运行,因此您不必担心之后会出现意外情况.而对于PCL profile 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!");
Run Code Online (Sandbox Code Playgroud)
在您的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());
Run Code Online (Sandbox Code Playgroud)