便攜式類庫(PCLS)已正式棄用 [2017年8月16日]
如果」今天在不同的.NET實現之間共享代碼, 您可能知道可移植類庫(PCL)。使用.NET Standard 2.0的 版本,我們現在正式廢棄PCL ,您應該將項目移至.NET Standard。
來源:Announcing .NET Standard 2.0
便攜式類庫(PCL)現在在所有平臺上[二零一三年十月十四日]
此前今天的發佈,有許可限制使用這意味着它們只能在Windows上使用的PCL 引用程序集。 隨着今天的發佈,我們宣佈推出 PCL參考組件的新獨立版本,許可證允許它在 任何平臺(包括非微軟平臺)上使用。這使得開發人員可以更靈活地使用.NET來完成偉大的事情。
來源:Portable Class Library (PCL) now available on all platforms
下載:Microsoft .NET Portable Library Reference Assemblies 4.6 RC
只爲參考允許組組件有:
mscorlib.dll中
SYSTE m.dll
System.Core.dll
system.xml.dll的
System.ComponentModel.Composition.dll(MEF)
System.Net.dll
系統。 Runtime.Serialization.dll
System.ServiceModel.dll
System.Xml.Serialization.dll
System.Windows.dll中(Silverlight的)
據我知道你需要標記與數據成員屬性的字段,並添加DataContract屬性。
UPDATE
是。
您可以看看如何實施Json.NET便攜式類庫解決方案。當您從這裏下載項目Json.NET 4.5 Release 10 (source + binary)時,您可以在Source \ Src \ Newtonsoft.Json.Portable中找到解決方案。
基本上他們使用的方法與自定義屬性提供
//不要使用序列化
#if !(SILVERLIGHT || WINDOWS_PHONE || NETFX_CORE || PORTABLE)
[Serializable]
#endif
//使用自定義提供
#if NETFX_CORE || PORTABLE
using ICustomAttributeProvider = Newtonsoft.Json.Utilities.CustomAttributeProvider;
#endif
如果項目是便攜式
#if !PocketPC && !NET20
DataContractAttribute dataContractAttribute = GetDataContractAttribute(objectType);
if (dataContractAttribute != null)
return MemberSerialization.OptIn;
#endif
其中選擇啓用介紹:
/// <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,
希望它能幫助。
更新2
我是不可能輸給任何能力使用[DataContract]代替 [可序列化],否則我將仍然能夠做到這一點 [Serializable接口]支持一切嗎?
你可以做到這一點Serializable接口支持除在對象是如何設置的名稱和順序之外連載 控制一切。
使用DataContractSerializer有幾個好處:
序列任何裝飾的[DataMember]
即使它不是公共可見
不能序列任何東西,除非你明確告訴它(「選擇加入」)
可以定義在其中元件使用在[DataMember]
的
[Order=]
屬性序列的順序
不需要用於反序列化的無參數構造函數
比XmlSerializer快10%。
在這裏閱讀更多:XmlSerializer vs DataContractSerializer
還在爲參考:
DataContract
支持在默認模式下以下幾種類型的序列: CLR內建類型
字節數組,DateTime,TimeSpan,GUID,Uri,XmlQualifiedName, XmlElement和XmlNode數組
枚舉
類型標有DataContract或CollectionDataContract屬性
類型實現IXmlSerializable的
數組和集合類,包括列表,字典和 Hashtable的
類型標有Serializable屬性包括那些 實現ISerializable
沒有上述屬性的類型(POCO)bu t with default 構造函數
我的主要關注點是; [DataContract]和[DataMember]的裝飾是否足以替代[Serializable]? –
查看最新的答案。 –
非常感謝您提供的信息更新,我將仔細研究JSON。我是否會失去使用[DataContract]而不是[Serializable]的能力,或者我仍然能夠完成[Serializable]支持的所有功能? –