Переносимая библиотека классов: рекомендуемая замена для [Serializable]
Я портирую библиотеку классов .NET Framework C # на Portable Class Library. Одна повторяющаяся проблема состоит в том, как бороться с классами, украшенными[Serializable]
атрибут, так как этот атрибут не является частью подмножества Portable Class Library. Функциональность сериализации в подмножестве Portable Class Library вместо этого, кажется, покрытаDataContractAttribute.
[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; }
...
}