我将.NET Framework C#类库移植到可移植类库中。 一个反复出现的问题是如何处理用[Serializable]属性修饰的类,因为这个属性不是可移植类库子集的一部分。 可移植类库子集中的序列化function似乎被DataContractAttribute覆盖。 为了在可移植类库中保留尽可能多的function,用[DataContract]属性replace[Serializable]是否足够(暗示所有需要序列化的字段和属性都需要用[DataMember]作为装饰[DataMember]好)? 什么(如果有的话),我不能用这种方法,我可以用[Serializable]应用做什么? 有没有一个侵入性的方法? 鉴于使用了[DataContract]和[DataMember] ,我正在考虑按照以下几行更改代码。 这种方法有没有明显的缺陷? 有没有什么办法可以减less冗长的相同事物? #if PORTABLE [DataContract] #else [Serializable] #endif public class SerializableClass : SerializableBaseClass { … #if !PORTABLE protected SerializableClass(SerializationInfo info, StreamingContext context) : base(info, context) { } #endif … #if PORTABLE [DataMember] #endif private Type1 _serializableField; #if PORTABLE [DataMember] #endif private Type2 SerializableProperty { get; […]