2010-03-02 13 views

Respuesta

15

Editado: Haga que el ajustador internal.

Esto todavía se puede ajustar dentro del ensamblaje, pero es un buen truco que funciona bien cuando se usa en objetos de datos ubicados en un ensamblaje que otros consumen, ya que los ensamblados que consumen no podrán establecer la propiedad, pero los varios serializadores pueden.

+0

Protegido no permitirá que la propiedad se establezca desde fuera de la clase, por lo que la deserialización aún fallará ... –

+0

Gracias Slugster !!! Para su respuesta ... – BreakHead

+0

@Dan - verifique mi edición. Sabía que había encontrado este antes, pero tenía que volver y comprobar cómo lo había tratado. Tienes razón: Inicialmente probé * protected * pero descubrí que no funcionaba, así que usé * internal * en su lugar. – slugster

4

Recuerde que WCF necesita crear una instancia del objeto a partir de su representación serializada (a menudo XML) y si la propiedad no tiene definidor no puede asignar un valor. Los objetos no se transfieren entre el cliente y el servidor, sino solo las representaciones serializadas, por lo que el objeto debe reconstruirse en cada extremo.

2

Su pregunta es un poco vago, pero supongo que esta es la respuesta que estás buscando:

defecto serialización sólo funcionará para las propiedades de lectura y escritura, porque no se puede rehidratar un objeto sin establecer valores de propiedad . Si desea que funcione con la propiedad de solo lectura, debe implementar la interfaz de serialización usted mismo, en lugar de solo agregar atributos.

Suponiendo que está utilizando la serialización de DataContract, I think la mejor opción es implementar ISerializable e implementar los métodos usted mismo.

Cuestiones relacionadas