Переносимая библиотека классов: рекомендуемая замена для [Serializable]

Я портирую библиотеку классов .NET Framework C # на Portable Class Library. Одна повторяющаяся проблема состоит в том, как бороться с классами, украшенными[Serializable] атрибут, так как этот атрибут не является частью подмножества Portable Class Library. Функциональность сериализации в подмножестве Portable Class Library вместо этого, кажется, покрытаDataContractAttribute.

Чтобы сохранить как можно больше функциональных возможностей в Portable Class Library, достаточно ли заменить[Serializable] с[DataContract] атрибут (подразумевается, что все поля и свойства, подлежащие сериализации, должны быть украшены[DataMember] также)?Что (если что) я будуне быть в состоянии сделать с этим подходом, который яМожно делать с[Serializable] применяется?Есть ли менее навязчивый подход?

При условии[DataContract] а также[DataMember] используются, я собираюсь изменить код в следующих направлениях. Есть ли очевидные недостатки этого подхода? Есть ли способ сформулировать то же самое менее многословно?

#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; set; }

        ...
    }

Ответы на вопрос(3)

Ваш ответ на вопрос