Biblioteka klas przenośnych: zalecany zamiennik dla [Serializable]
Przenoszę bibliotekę klasy .NET Framework C # do przenośnej biblioteki klas. Jednym z powtarzających się problemów jest sposób radzenia sobie z klasami ozdobionymi[Serializable]
atrybut, ponieważ ten atrybut nie jest częścią podzbioru Portable Class Library. Wydaje się, że funkcjonalność serializacji w podzbiorze Portable Class Library jest objętaDataContractAttribute.
[Serializable]
z[DataContract]
atrybut (co oznacza, że wszystkie pola i właściwości podlegające serializacji będą musiały być ozdobione[DataMember]
także)?Co (jeśli w ogóle) będęnie być w stanie zrobić z tym podejściem, które jamogą zrobić z[Serializable]
stosowany?Czy istnieje mniej inwazyjne podejście?Jeśli się uwzględni[DataContract]
i[DataMember]
są używane, rozważam zmianę kodu w następujących liniach. Czy są jakieś oczywiste wady tego podejścia? Czy jest jakiś sposób na sformułowanie tego samego mniej gadatliwego?
#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; }
...
}