Utilizando la biblioteca de clases .NET 2.0 del servicio WCF Silverlight, las propiedades públicas siguen siendo no expuestas

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

  •  22-09-2019
  •  | 
  •  

Pregunta

Aquí hay un problema sutil con el que estoy tratando, y agradecería cualquier ayuda.

Tenemos nuestro proyecto en modo de producción, construido con .NET 2.0. Recientemente hemos desarrollado una aplicación Silverlight externa a la solución 2.0, y está "hablando" con un servicio WCF. Este servicio consume DLLS que copiamos de nuestras carpetas de publicación de la solución 2.0, para acceder a la funcionalidad desde nuestra solución original.

El servicio WCF está exponiendo varios métodos y objetos que se originan en nuestra solución 2.0. Obviamente, utiliza [DataContract] s y [DataMember] S internamente, y esos no están disponibles en nuestra solución original (ya que es .NET 2.0, y en este punto actualizar a 3.5 no es una opción). Afortunadamente, WCF puede tratar nuestros objetos serializables como si se definieran como contratos, pero por alguna razón extraña solo las variables de los miembros (¡incluso si se definen como privadas!) Las propiedades, incluso las configurables y los públicos nunca se serializan.

Nuestras clases de objetos que necesitamos expuestas tienen [Serializable ()] definido en ellas. He mirado a su alrededor y no pude encontrar una buena solución / explicación para esto. Probablemente tenga que ver con cómo .NET 3.0/3.5 está "viendo" mis objetos 2.0 (asume [DataMember] solo en variables y nunca en propiedades).

¿Mi pregunta es principalmente cómo exponer las propiedades públicas y nunca las variables privadas?

Gracias de antemano por cualquier idea de esto.

Itamar.

¿Fue útil?

Solución

La razón para esto sigue siendo desconocida. Hemos omitido este problema derivando del objeto expuesto (que reside en DLL compiladas que estamos utilizando a través del proyecto WCF) y luego recreando las propiedades y las funciones auxiliares que necesitamos. También agregamos nuevas propiedades o variables de miembros donde sea necesario. Luego usamos ese nuevo objeto internamente (esto a veces requiere tener un constructor especializado para hacer algunas copias o ajustes). No es ideal, pero trabajando.

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