Я переношу библиотеку классов .NET Framework С# в портативную библиотеку классов. Одна повторяющаяся проблема заключается в том, как обращаться с классами, украшенными атрибутом [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; }
...
}