Si estoy serializando y luego deserializando una clase usando DataContractSerializer
, ¿cómo puedo controlar los valores iniciales de las propiedades que no fueron serializadas?Establecer el valor inicial de una propiedad al usar DataContractSerializer
Considere la clase Person
a continuación. Su contrato de datos está configurado para serializar las propiedades FirstName
y LastName
pero no la propiedad IsNew
. Quiero IsNew
para inicializar en VERDADERO si una nueva Persona está siendo instanciada como una nueva instancia o deserializada de un archivo.
Esto es fácil de hacer a través del constructor, pero según tengo entendido, DataContractSerializer
no llama al constructor ya que podrían necesitar parámetros.
[DataContract(Name="Person")]
public class Person
{
[DataMember(Name="FirstName")]
public string FirstName { get; set; }
[DataMember(Name = "LastName")]
public string LastName { get; set; }
public bool IsNew { get; set; }
public Person(string first, string last)
{
this.FirstName = first;
this.LastName = last;
this.IsNew = true;
}
}
Como Pavel menciona que debería ser [OnDeserializing], el valor se sobrescribirá todas las veces en lugar de una sola vez (cuando faltaba). –