tengo un objeto de persona y necesito almacenarlo como byte [] y recuperar ese byte [] y convertirlo en objeto de persona y BinaryFormatter es no availabe en Silverlightconvertir objeto (es decir, cualquier objeto como persona, empleado) en byte [] en silverlight
Respuesta
Utilice la clase serializada para convertir el objeto en un byte a través de uso de un MemoryStream
using System.Runtime.Serialization.Formatters.Binary; using System.Runtime.Serialization; .... byte[] bPersonInfo = null; using (MemoryStream mStream = new MemoryStream()) { System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(mStream, personInfo); bPersonInfo = mStream.ToArray(); } .... // Do what you have to do with bPersonInfo which is a byte Array... // To Convert it back PersonInfo pInfo = null; using (MemoryStream mStream = new MemoryStream(bPersonInfo)){ System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new BinaryFormatter(); pInfo = (PersonInfo)bf.DeSerialize(mStream); } // Now pInfo is a PersonInfo object.
Espero que esto ayude, saludos, Tom.
Gracias Tom, The BinaryFormatter no está disponible en SilverLIght –
No estoy seguro de por qué los upvotes están aquí; no parece que el espacio de nombre de los formateadores esté disponible en Silverlight. ¿O me estoy perdiendo algo? – Jeffrey
Esta solución no funcionará con SL – rboarman
He utilizado XML Serializer para convertir el objeto en una cadena y ellos convierten la cadena en byte [] con éxito en Silverlight.
object address = new Address();
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(Address));
StringBuilder stringBuilder = new StringBuilder();
using (StringWriter writer = new StringWriter(stringBuilder))
{
serializer.Serialize(writer, address);
}
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
byte[] data = encoding.GetBytes(stringBuilder.ToString());
Debido a los espacios de nombres mencionados por t0mm13b no son parte del motor Silverlight .NET, la forma correcta es utilizar esta solución el aprovechamiento de la serializador contrato de datos:
http://forums.silverlight.net/forums/t/23161.aspx
Desde el enlace :
string SerializeWithDCS(object obj)
{
if (obj == null) throw new ArgumentNullException("obj");
DataContractSerializer dcs = new DataContractSerializer(obj.GetType());
MemoryStream ms = new MemoryStream();
dcs.WriteObject(ms, obj);
return Encoding.UTF8.GetString(ms.GetBuffer(), 0, (int)ms.Position);
}
Si realmente necesita binario y quiere que sea muy rápido y muy pequeño, entonces debería usar protobuf de Google.
http://code.google.com/p/protobuf-net/
mirada a estas cifras de rendimiento. Protobuf es por lejos el más rápido y el más pequeño.
Lo he utilizado para WCF < -> Silverlight con éxito y no dudaría en volver a utilizarlo para un nuevo proyecto.
- 1. Convierta cualquier objeto en un byte []
- 2. Silverlight 4.0: ¿Cómo convertir byte [] a imagen?
- 3. byte [] a BitmapImage en silverlight
- 4. Java: objeto a byte [] y byte [] al convertidor de objeto (para el gabinete de Tokio)
- 5. Silverlight cambia estilos según el valor de propiedad de un objeto (es decir, DataTrigger)
- 6. Convertir objeto a enum C#
- 7. convertir una lista de objeto Person en una cadena separada por getNombre (a) Propiedad de la persona objeto
- 8. Objeto Byte Array to Image
- 9. Cualquier persona usando Qi4J
- 10. Silverlight: Imagen de byte []
- 11. ¿Por qué no puedo convertir un objeto (que en realidad es el objeto []) en una cadena []?
- 12. Convertir objeto Java en CSV
- 13. cómo convertir un objeto timedelta en un objeto datetime
- 14. Alguna vez es válido convertir un objeto de una clase base en una subclase
- 15. ¿Es posible animar un PolyLineSegment en Silverlight, es decir, PointCollection?
- 16. convertir una cadena en javascript objeto
- 17. Convertir objeto .Net al objeto JSON en la vista
- 18. ¿Puedo convertir un objeto Stream en un objeto FileInfo?
- 19. cómo convertir objeto en cadena en PHP
- 20. Convertir sbyte en byte
- 21. Convertir objeto de JSON en Android
- 22. Convertir byte [] en char []
- 23. conversión de objeto de documento a byte []
- 24. Cómo convertir IntPtr en byte *
- 25. Convierta cualquier objeto a HTML bonito en java
- 26. Convirtiendo cualquier objeto a una matriz de bytes en java
- 27. objeto Array-como en javascript
- 28. ¿Cómo convertir un objeto en su tipo?
- 29. Cómo convertir JSON en el objeto
- 30. ¿Cuál es la mejor manera de convertir un objeto proxy EF en el objeto POCO original?
Tengo el mismo problema al convertir una aplicación winforms existente a silverlight. La función existente con funciones ilegales AllocHGlobal y FreeHGlobal es: byte estático público [] RawSerialize (object anything) { int rawsize = Marshal.SizeOf (cualquier cosa); IntPtr buffer = Marshal.AllocHGlobal (rawsize); Marshal.StructureToPtr (anything, buffer, false); byte [] rawdatas = new byte [rawsize]; Marshal.Copy (buffer, rawdatas, 0, rawsize); Marshal.FreeHGlobal (buffer); return rawdatas; } – Jeffrey