¿Cuál es la forma más sencilla de hacer que XmlSerializer también serialice las propiedades privadas y de "público const" de una clase o estructura? Correcto, no todo lo que saldrá para mí son cosas que son solo públicas. Hacerlo privado o agregar const hace que los valores no se serialicen.Uso de XmlSerializer con propiedades privadas y públicas de const
Respuesta
XmlSerializer
solo se ve en campos públicos y propiedades. Si necesita más control, puede implementar IXmlSerializable y serializar lo que desee. Por supuesto, serializar una constante no tiene mucho sentido ya que no se puede deserializar a una constante.
Consulte DataContractSerializer, presentado en .NET 3.0. También utiliza el formato XML, y en muchos sentidos, es mejor que XmlSerializer, incluido el manejo de datos privados. Ver http://www.danrigsby.com/blog/index.php/2008/03/07/xmlserializer-vs-datacontractserializer-serialization-in-wcf/ para una comparación completa.
Si solo tiene .NET 2.0, está el Servidor Binario que puede tratar con datos privados, pero por supuesto es un formato binario.
'Mejor' es discutible, por ejemplo , DataContractSerializer no le da ninguna flexibilidad sobre cómo se serializa el objeto. – nicodemus13
No tiene sentido considerar a los miembros const
, ya que no son por instancia; pero si solo quiere decir miembros de instancias no públicas: considere DataContractSerializer
(.NET 3.0) - esto es similar a XmlSerializer
, pero puede serializar propiedades no públicas (aunque es "opt-in").
Ver here for more.
La serialización del valor de una constante para un tiempo de ejecución particular tiene mucho sentido, si, por ejemplo, debe compararse con el valor en otro tiempo de ejecución. – Grault
@Jesdisciple no realmente - porque de nuevo: este es un serializador de objetos (instancia) - y ese valor no pertenece al objeto (instancia). –
A pesar de que no es posible serializar propiedades privadas, puede serializar propiedades con un colocador interna, como éste:
public string Foo { get; internal set; }
de hacer eso, es necesario comprobar la validez de generar el ensamblado de serialización con sgen. exe, y declarar este conjunto como amigo:
[assembly:InternalsVisibleTo("MyAssembly.XmlSerializers")]
otra solución el uso de Newtonsoft.Json:
var json = Newtonsoft.Json.JsonConvert.SerializeObject(new { root = result });
var xml = (XmlDocument)Newtonsoft.Json.JsonConvert.DeserializeXmlNode(json);
Claro, este desafortunadamente se ha desviado a través de json.
aquí está mi solución para poner los valores inmutables en una propiedad que va a serializar a XML:
[XmlElement]
public string format { get { return "Acme Order Detail XML v3.4.5"; } set { } }
- 1. Uso de credenciales privadas y públicas en JAAS
- 2. Clases de C++ (públicas, privadas y protegidas)
- 3. ¿Por qué mis propiedades públicas no están serializadas por XmlSerializer?
- 4. ¿Las claves públicas y privadas son intercambiables?
- 5. clases públicas Java con clases privadas dependientes
- 6. Tragamonedas públicas y privadas en R?
- 7. Colas privadas y públicas en MSMQ
- 8. Constantes de clase PHP: ¿públicas, privadas o protegidas?
- 9. Conversor de propiedades XmlSerializer
- 10. Generar certificados, claves públicas y privadas con Java
- 11. force get/set acceso de variables privadas para propiedades privadas
- 12. Creación de clases con propiedades privadas
- 13. Claves RSA públicas/privadas en YAML
- 14. ¿En qué se diferencian las claves públicas y privadas?
- 15. Clojure, defn, defn-, públicas/privadas, incumplimientos
- 16. Ubicación del contenedor para claves públicas y privadas en Windows?
- 17. ¿El archivo .pem contiene claves privadas y públicas?
- 18. Diferencia entre variables estáticas públicas y privadas estáticas
- 19. Uso de medicamentos genéricos con XmlSerializer
- 20. ¿Bloquea el acceso a las variables de miembros privados? ¿Forzar el uso de propiedades públicas?
- 21. generando claves públicas/privadas rsa serializadas de NED Big Ints
- 22. ¿Cómo obtener propiedades públicas de una clase?
- 23. Java cifrado asimétrico: mejor forma de almacenar claves públicas/privadas
- 24. XmlSerializer. Mantener las propiedades de cadena nulas?
- 25. XmlSerializer y Colección propiedad privada con colocador
- 26. Obtener propiedades privadas/Método de clase base con reflejo
- 27. Creación de propiedades privadas en Objective-C
- 28. Confundido sobre el cifrado con claves públicas y privadas (que se usarán para el cifrado)
- 29. variables públicas frente a las variables privadas con descriptores de acceso
- 30. Almacenamiento de claves públicas y privadas en una base de datos o almacén de claves
Por qué desea constantes a ser serializados ?! Parece que estás yendo por una ruta incorrecta. –
Por definición, las constantes expuestas (es decir, públicas y protegidas) son algo que nunca va a cambiar. ¡Cambiar una constante pública es un cambio radical del cliente! Para algo que es simplemente constante para el funcionamiento de la aplicación, o para una versión particular de la aplicación, pero puede cambiar en el futuro, necesita usar campos 'readonly'. 'XmlSerializer' tampoco los manejará, pero es un asunto diferente. –
Si desea serializar/deserializar miembros privados, consulte http://stackoverflow.com/questions/420662/can-an-internal-setter-of-a-property-be-serialized –