Я создаю класс DataContract для десериализации из строки.Я прочитал какую-то статью и узнал, что я могу написать метод OnDeserialized, который будет вызываться после десериализации, прежде чем вернуть объект.Вот как это выглядит в моем классе.
Работает нормально, если какой-либо член НЕ находится в потоке.Как бы то ни было, у меня вопрос в том случае, если член НЕ находится в потоке, кто может гарантировать, что эти неинициализированные значения равны 0, DateTime.MinValue и null соответственно?
Кроме того, если член int имеет значениеиз 0, откуда я знаю, что он из потока или не инициализирован?
[DataContract]
public class MyData
{
[DataMember]
public int MemberA { get; set; }
[DataMember]
public DateTime MemberB { get; set; }
[DataMember]
public string MemberC { get; set; }
[OnDeserialized]
void OnDeserialized(StreamingContext c)
{
if (MemberA == 0)
MemberA = 100;
if (MemberB == DateTime.MinValue)
MemberB = DateTime.Now;
if (MemberC == null)
MemberC = "MemberC";
}
}
Я ищу лучший подход, что-то вроде
if (NotInitialized(MemberA))
MemberA = xxx;