Uso de IExtensibleDataObject en clientes
He convertido mi servicio web en un servicio wcf que tiene algunos contratos de datos. Como práctica recomendada, se menciona y es aconsejable que los DataContracts hereden de IExtensibleDataObject. Entiendo que en caso de adición o eliminación de miembros de datos, IExtensibleDataObject es útil. Pero no puedo entender cómo accederán los clientes a los miembros de datos eliminados. Aquí está mi código:
[ServiceContract(Namespace = "http://mycompany.com/2010/08/")]
public class MyWebService {
[OperationContract]
public Employee Add(Employee emp)
{
// Some Processing
}
}
[DataContract(Name = "Employee", Namespace = "http://mycompany.com/2010/08/")]
public class Employee : IExtensibleDataObject {
[DataMember] public string FirstName;
[DataMember] public string LastName;
public ExtensionDataObject ExtensionData { get; set; }
}
Ahora, en mi próxima versión del servicio web, hice algunos cambios en DataContract como
[DataContract(Name = "Employee", Namespace = "http://mycompany.com/2010/09/")]
public class Employee : IExtensibleDataObject {
[DataMember] public string FirstName;
[DataMember] public string LastName;
[DataMember(IsRequired = true)] public string MiddleName;
public ExtensionDataObject ExtensionData { get; set; }
}
Sin embargo, mi cliente que está accediendo a mi versión anterior del servicio web ahora recibe un error por no proporcionar el campo MiddleName. Todavía estoy confundido por el uso de IExtensionDataObject.