2017-10-11 5 views
0

En référence à ce lien https://developer.xamarin.com/api/namespace/System.Security.Cryptography/Comment utiliser System.Security.Cryptography dans Xamarin.Forms PCL

Puis-je savoir comment dois-je inclure dans mon projet Xamarim.Forms PCL? Quand je comprends dans, Visual Studio donne erreur comme l'image ci-dessous

enter image description here

Puis-je savoir si quelqu'un a une idée de comment résoudre ce problème? Merci.

+0

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

Répondre

0

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.

+0

Merci, semble légitime avec l'idée de DependencyService. Mais est-il possible d'utiliser le projet partagé puisque actuellement je suis déjà en PCL? Je suis très nouveau à Xamarin, j'ai juste commencé à apprendre. Seriez-vous capable d'expliquer plus en détail comment utiliser le projet partagé dans ce cas pour réduire mon temps de développement? Et oui, la mise en œuvre est la même pour toutes les plateformes. – teapeng

+0

@teapeng J'ai ajouté d'autres explications sur la façon d'ajouter un projet partagé. –

+0

Merci .. J'ai marqué le vôtre comme réponse parce que je l'ai fait en utilisant le DependencyService. Mais j'aimerais essayer de mettre en œuvre en utilisant SAP pour faciliter la maintenance. Merci encore pour l'aide rapide. – teapeng