contrato de datos C # WCF clase parcial - nuevo campo de segunda clase parcial no ser recogido

StackOverflow https://stackoverflow.com/questions/4386677

Pregunta

Tengo un servicio de WCF en el que tengo algunos contratos de datos. Estoy usando fábrica de software de servicios web, que utiliza un diseñador para crear todo el mensaje y datos y otros contratos, y les crea como clases parciales. Cuando se regenera el código de las clases se vuelven a crear.

using WcfSerialization = global::System.Runtime.Serialization;

[WcfSerialization::CollectionDataContract(Namespace = "urn:CAEService.DataContracts", ItemName = "SecurityItemCollection")]
public partial class SecurityItemCollection : System.Collections.Generic.List<SecurityItem>
{
}

El contrato de datos es una lista genérica de una clase personalizada que estaba trabajando muy bien. Sin embargo ahora quiero añadir un alojamiento a esta clase, por lo que añade esta clase parcial en el mismo espacio de nombres:

public partial class SecurityItemCollection
{
    public int TotalRecords { get; set; }
}

Esto parece muy bien el trabajo en el lado del servicio, pero cuando compilo y luego actualizar la referencia de servicio por parte del cliente, la clase no tiene la nueva es decir, propiedad cuando serialises y lo recrea en el lado del cliente, es falta la nueva propiedad. Alguien sabe qué es esto?

TIA

EDIT: Muy bien, este es conducir oficialmente me nueces. La única cosa que puedo ver es que está utilizando el atributo CollectionDataContract en lugar de DataContract. ¿Esto de alguna manera no permitir que los miembros de datos de la clase para ser serializados? ¿Por qué sería? Es bien está trabajando en el lado del servicio - me puede ver y rellenar los valores no hay problema. Sin embargo, cuando se actualiza el refernce servicio en mi cliente no hay nada, sólo la clase colelction sin el miembro de datos.

¿Fue útil?

Solución 2

Ok después de mucho buscar por fin descubrió que esto no está permitido clases es decir, marcados como CollectionDataContract no puede tener miembros de datos. ¿Por qué esto es que no tengo idea, pero me costó varias horas y un gran dolor de cabeza. Vea el enlace a continuación:

WCF y CollectionDataContract DataMember

Otros consejos

Trate de añadir el atributo DataMember a la propiedad TotalRecords

Sé que esto es viejo, pero seguía apareciendo cuando busqué sobre este tema. Yo era capaz de conseguir este trabajo mediante la adición de un atributo "DataMemberAttribute" a la propiedad. A continuación se muestra un ejemplo de código.

public partial class SecurityItemCollection
{
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public int TotalRecords { get; set; }

}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top