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

如何在Xamarin.Forms PCL中使用System.Security.Cryptography,xamarin,xamarin.forms,visual-studio-2017,Xamarin,Xamarin.forms,Visual Studio 2017,请参考此链接 我可以知道如何在我的Xamarim.Forms PCL项目中包括这个吗?当我加入时,VisualStudio给出的错误如下图所示 我能知道有谁知道怎么解决这个问题吗?谢谢。名称空间在Xamarin.iOS和Xamarin.Android中都可用。您可以为这两个平台创建特定于平台的实现,然后使用 在PCL中,您将拥有任何所需的接口 public interface ICryptoService // or whatever { string Cipher(string stri

请参考此链接

我可以知道如何在我的Xamarim.Forms PCL项目中包括这个吗?当我加入时,VisualStudio给出的错误如下图所示


我能知道有谁知道怎么解决这个问题吗?谢谢。

名称空间在Xamarin.iOS和Xamarin.Android中都可用。您可以为这两个平台创建特定于平台的实现,然后使用

在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>();
var cryptoService=DependencyService.Get();
然后使用它。iOS的步骤基本相同。对于UWP,您必须手动注册实现,请参阅

编辑:

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

编辑2:

将共享项目添加到现有的Xamarin.Forms解决方案非常简单。只需右键单击VS中的解决方案,选择添加->新建项目。。。(目前我手头只有一个德语版本的VS,但应该是类似的)。现在选择Shared Project,给它一个名称,然后单击OK,您的解决方案中将有一个新的共享项目


现在右键单击特定于平台的项目,然后选择“添加->引用…”。。。。添加引用的窗口应该打开,在左侧,您可以选择引用的源(程序集、项目、共享项目、COM和浏览)。选择共享项目,然后选择刚刚创建的项目。现在,共享项目中的任何代码文件都将与特定于平台的项目一起编译,就像代码文件位于特定于平台的项目中一样(注意名称空间!)。对其他特定于平台的项目重复此操作。

名称空间在Xamarin.iOS和Xamarin.Android中都可用。您可以为这两个平台创建特定于平台的实现,然后使用

在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>();
var cryptoService=DependencyService.Get();
然后使用它。iOS的步骤基本相同。对于UWP,您必须手动注册实现,请参阅

编辑:

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

编辑2:

将共享项目添加到现有的Xamarin.Forms解决方案非常简单。只需右键单击VS中的解决方案,选择添加->新建项目。。。(目前我手头只有一个德语版本的VS,但应该是类似的)。现在选择Shared Project,给它一个名称,然后单击OK,您的解决方案中将有一个新的共享项目


现在右键单击特定于平台的项目,然后选择“添加->引用…”。。。。添加引用的窗口应该打开,在左侧,您可以选择引用的源(程序集、项目、共享项目、COM和浏览)。选择共享项目,然后选择刚刚创建的项目。现在,共享项目中的任何代码文件都将与特定于平台的项目一起编译,就像代码文件位于特定于平台的项目中一样(注意名称空间!)。对其他特定于平台的项目重复上述操作。

我认为有些系统加密类不能在PCL中使用。我使用pclCrypto NuGet在我的pcl中运行加密函数。我相信有一些系统加密类不能在PCL中使用。我使用pclCrypto NuGet在我的pcl中运行加密函数。谢谢,看起来依赖服务的理念是合法的。但是,既然我现在已经在PCL,是否可以使用共享项目?我对Xamarin很陌生,刚刚开始学习。您能否进一步详细解释一下,在这种情况下,我如何使用共享项目来缩短开发时间?是的,所有平台的实现都是一样的。@teapeng我已经添加了关于如何添加共享项目的进一步说明。谢谢。。我将您的标记为答案,因为我使用DependencyService完成了此操作。但我很愿意尝试使用SAP实现,以便于维护。再次感谢您的快速帮助。@teapeng SAP在本文中的含义是什么?噢,这是共享资产项目。。我从Xamarin的电子书中学到这个词。他们一直在谈论PCL和SAP。谢谢,看起来DependencyService的想法是合法的。但是,既然我现在已经在PCL,是否可以使用共享项目?我对Xamarin很陌生,刚刚开始学习。您能否进一步详细解释一下,在这种情况下,我如何使用共享项目来缩短开发时间?是的,所有平台的实现都是一样的。@teapeng我已经添加了关于如何添加共享项目的进一步说明。谢谢。。我将您的标记为答案,因为我使用DependencyService完成了此操作。但我很愿意尝试使用SAP实现,以便于维护。再次感谢您的快速帮助。@teapeng SAP在本文中的含义是什么?噢,这是共享资产项目。。我从Xamarin的电子书中学到这个词。他们一直在谈论PCL和SAP。