如何在Xamarin.Forms PCL中使用System.Security.Cryptography

时间:2017-10-11 05:32:54

标签: xamarin xamarin.forms visual-studio-2017

参考此链接https://developer.xamarin.com/api/namespace/System.Security.Cryptography/

我可以知道如何将这个包含在我的Xamarim.Forms PCL项目中吗?当我包含时,Visual Studio会给出错误,如下图所示

enter image description here

我想知道是否有人知道如何解决这个问题?感谢。

1 个答案:

答案 0 :(得分:2)

Xamarin.iOS和Xamarin.Android都提供了命名空间。您可以为两个平台制定特定于平台的实现,然后使用DependencyService

解决它们

您可以在PCL中找到所需的界面

public interface ICryptoService // or whatever
{
  string Cipher(string stringToCipher);
  string Decipher(string stringToDecipher);
}

然后在您的平台特定项目中实施这些

using System.Security.Cryptography;

namespace MyApp.Droid
{
  public class CryptoService : ICryptoService
  {
    // implement interface
  }
}

要使实施对DependencyService可见,您必须使用DependencyAttribute

[assembly: Xamarin.Forms.Dependency(typeof(MyApp.Droid.CryptoService)]

您现在可以使用

在PCL中获取实例
var cryptoService = DependencyService.Get<ICryptoService>();

然后使用它。 iOS的步骤基本相同。对于UWP,您必须手动注册实现,请参阅here

修改

由于所有平台的实现可能都是相同的,因此您可以引入一个共享项目并将实现放在那里。您现在要做的就是引用iOS和Android项目中的共享项目。

编辑2:

将共享项目添加到现有的Xamarin.Forms解决方案非常简单。只需右键单击VS中的解决方案,选择添加 - &gt; 新项目...... (目前我手边只有一个德国本地化的VS,但它应该是那样的)。现在选择共享项目,为其命名并单击确定,您的解决方案中将有一个新的共享项目。

现在右键单击特定于平台的项目,然后选择添加 - &gt; 参考... 的。应该打开添加引用的窗口,在左侧可以选择引用的源(程序集,项目,共享项目,COM和浏览)。选择共享项目,然后选择刚刚创建的项目。现在,您的共享项目中的任何代码文件都将使用您的特定于平台的项目进行编译,就好像代码文件位于特定于平台的项目中一样(注意命名空间!)。重复其他平台特定项目。