Bibliothèque de classes Portable (PCL) est maintenant disponible sur toutes les plateformes [14 Oct 2013]
Avant la publication d'aujourd'hui, il y a une restriction de licence avec le PCL
référence assemblées qui signifie qu'ils ne pourraient être utilisés que sur Windows.
Avec la publication d'aujourd'hui, nous annonçons une nouvelle version monoposte de l'
PCL référence assemblées avec une licence qui lui permet d'être utilisé sur
n'importe quelle plateforme, y compris les non-Microsoft chers. Cela permet aux développeurs
encore plus de flexibilité et de faire de grandes choses avec .NET.
Source: Bibliothèque de classes Portable (PCL) est maintenant disponible sur toutes les plateformes
Télécharger: Microsoft .NET Portable de Référence de la Bibliothèque Assemblées 4.6 RC
Juste pour la référence, le permis d'assemblées sont:
mscorlib.dll
System.dll
System.Core.dll
System.Xml.dll
System.ComponentModel.Composition.dll (MEF)
System.Net.dll
System.Runtime.Serialization.dll
System.ServiceModel.dll
System.Xml.Serialization.dll
System.Windows.dll (Silverlight)
Comme je sais que vous avez besoin de marquer les champs avec DataMember attribut, et ajouter le DataContract attribut.
Mise à JOUR
Oui.
Vous pouvez regarder comment Json.NET bibliothèque de classes portable solution est mise en œuvre. Vous pouvez trouver la solution dans la Source\Src\Newtonsoft.Json.Portable lorsque vous téléchargez le projet à partir d'ici Json.NET 4.5-Release 10 (source + binaire).
Essentiellement, ils sont en utilisant une approche avec un attribut personnalisé fournisseur
//n'utilisez pas Sérialisable
#if !(SILVERLIGHT || WINDOWS_PHONE || NETFX_CORE || PORTABLE)
[Serializable]
#endif
//utilisation d'un fournisseur personnalisé
#if NETFX_CORE || PORTABLE
using ICustomAttributeProvider = Newtonsoft.Json.Utilities.CustomAttributeProvider;
#endif
Et si le projet est de PORTABLE
#if !PocketPC && !NET20
DataContractAttribute dataContractAttribute = GetDataContractAttribute(objectType);
if (dataContractAttribute != null)
return MemberSerialization.OptIn;
#endif
où OptIn description est:
/// <summary>
/// Only members must be marked with <see cref="JsonPropertyAttribute"/> or <see cref="DataMemberAttribute"/> are serialized.
/// This member serialization mode can also be set by marking the class with <see cref="DataContractAttribute"/>.
/// </summary>
OptIn,
Espérons que cela aide.
Mise à JOUR 2
Suis-je perdre des capacités à l'aide de [DataContract] au lieu de
[Serializable], ou vais-je encore être en mesure de faire tout ce que
[Serializable] prend en charge?
Vous pouvez faire tout ce que Serializable prend en charge à l'exception de
contrôle sur la façon dont l'objet est sérialisé en dehors de la définition du nom et de l'ordre.
À l'aide de DataContractSerializer a plusieurs avantages:
sérialiser rien décorées avec un [DataMember]
, même si elle n'est pas visible du public
ne peut pas sérialiser rien à moins que vous dire précisément ce qu'il ("opt-in")
vous pouvez définir l'ordre dans lequel les éléments sont en série à l'aide de l' [Order=]
attribut sur l' [DataMember]
ne nécessite pas un constructeur sans paramètre pour la désérialisation
est 10% plus rapide que le XmlSerializer.
Lire la suite ici: XmlSerializer vs DataContractSerializer
Aussi pour la référence:
DataContract
soutient la sérialisation des types suivants de types dans le mode par défaut:
CLR types intégrés
Tableau d'octets, DateTime, TimeSpan, GUID, Uri, XmlQualifiedName,
XmlElement et XmlNode tableau
Les Enums
Types marqué avec DataContract ou CollectionDataContract attribut
Les Types qui implémentent IXmlSerializable
Les tableaux et les classes de Collection, y compris la Liste, et le Dictionnaire de
Hashtable
Types marquée avec l'attribut Serializable y compris ceux qui
mettre en œuvre ISerializable
Types avec aucune des caractéristiques ci-dessus (POCO), mais avec une valeur par défaut
constructeur