He convertido mi servicio web al servicio wcf que tiene algunos datos. Como una buena práctica, se menciona y es aconsejable que los DataContracts hereden de IExtensibleDataObject. Entiendo que, en caso de agregar o eliminar miembros de datos, IExtensibleDataObject es útil. Pero no puedo saber cómo accederán los clientes a los miembros de datos eliminados. Aquí está mi código:Uso de IExtensibleDataObject en clientes
[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 que hizo 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 es ahora conseguir de error por no suministrar el campo MiddleName. Todavía estoy confundido por el uso de IExtensionDataObject.
Lo que es incorrecto respecto? .NET genera automáticamente el campo de respaldo, y la documentación de Microsoft no explica por qué necesita ser virtual y por qué necesita el campo de respaldo especificado manualmente. – ShadowChaser