L'espace de noms est disponible à la fois dans Xamarin.iOS et Xamarin.Android. Vous pouvez faire des implémentations spécifiques de la plate-forme pour les deux plates-formes, puis les résoudre avec le DependencyService
Vous auriez votre interface pour tout ce que vous avez besoin dans votre PCL
public interface ICryptoService // or whatever
{
string Cipher(string stringToCipher);
string Decipher(string stringToDecipher);
}
, puis les mettre en œuvre dans votre plate-forme de projets spécifiques
using System.Security.Cryptography;
namespace MyApp.Droid
{
public class CryptoService : ICryptoService
{
// implement interface
}
}
pour la mise en œuvre visible DependencyService
vous devez utiliser le DependencyAttribute
[assembly: Xamarin.Forms.Dependency(typeof(MyApp.Droid.CryptoService)]
Vous pouvez maintenant obtenir une instance dans votre PCL avec
var cryptoService = DependencyService.Get<ICryptoService>();
puis l'utiliser. Les étapes pour iOS sont fondamentalement les mêmes. Pour UWP, vous devez enregistrer l'implémentation manuellement, voir here.
Edit:
Comme il est probable que la mise en œuvre sera la même pour toutes les plates-formes, vous pouvez mettre en place un projet commun et de mettre la mise en œuvre là. Tout ce que vous avez à faire maintenant est de référencer le projet partagé depuis vos projets iOS et Android.
Edit 2:
Ajout d'un projet commun à une solution de Xamarin.Forms existante est assez facile. Cliquez avec le bouton droit de la souris sur votre solution dans VS, choisissez Ajoutez ->Nouveau projet ... (Je n'ai pour l'instant qu'un allemand localisé sous la main, mais cela devrait être quelque chose dans les lignes). Maintenant, sélectionnez Shared Project, donnez-lui un nom et cliquez sur OK, il y aura un nouveau projet partagé dans votre solution.
maintenant le bouton droit sur votre plate-forme projet spécifique et choisissez Ajouter -> Référence .... La fenêtre pour ajouter une référence doit s'ouvrir et à gauche vous pouvez choisir la source de la référence (Assemblys, Projects, Shared Projects, COM et Browse). Sélectionnez Shared Project, puis le projet que vous venez de créer. Tout fichier de code dans votre projet partagé sera maintenant compilé avec votre projet spécifique à la plateforme comme si le fichier de code était dans le projet spécifique à la plate-forme (attention aux espaces de noms!). Répétez pour les autres projets spécifiques à la plate-forme.
Je crois qu'il existe des classes de cryptographie système qui ne peuvent pas être utilisées dans PCL.J'utilise le pclCrypto NuGet pour exécuter des fonctions de cryptographie dans mon pcl. https://www.nuget.org/packages/PCLCrypto/ – cvanbeek