J'ai un objet personne et j'ai besoin de le stocker comme byte [] et encore récupérer ce byte [] et convertir en objet personne et BinaryFormatter est pas availabe dans silverlightconvertir l'objet (c.-à-d. Tout objet comme personne, employé) à byte [] dans silverlight
Répondre
Utilisez la classe sérialisée pour convertir l'objet en un octet via l'aide d'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.
Hope this helps, Meilleures salutations, Tom.
Merci Tom, Le BinaryFormatter n'est pas disponible dans SilverLIght –
Je ne suis pas sûr de savoir pourquoi les upvotes sont ici - il ne semble pas que l'espace de noms Formatters est disponible dans Silverlight. Ou est-ce que je manque quelque chose? – Jeffrey
Cette solution ne fonctionnera pas avec SL – rboarman
J'ai utilisé XML Serializer pour convertir l'objet en une chaîne et les convertir la chaîne à byte [] avec succès dans 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());
Parce que les espaces de noms mentionnés par t0mm13b ne font pas partie du moteur .NET Silverlight, la bonne façon est d'utiliser cette solution de contournement tirant parti du contrat de données sérialiseur:
http://forums.silverlight.net/forums/t/23161.aspx
À partir du lien :
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 vous avez vraiment besoin binaire et que vous voulez qu'il soit super rapide et très petit, alors vous devriez utiliser protobuf de Google.
http://code.google.com/p/protobuf-net/
Regardez ces chiffres de performance. Protobuf est de loin le plus rapide et le plus petit.
Je l'ai utilisé pour WCF < -> Silverlight avec succès et ne hésiterais pas à l'utiliser à nouveau pour un nouveau projet.
- 1. Image URL à byte array utilisant Silverlight
- 2. convertir Byte en bit
- 3. Convertir les données SDP de byte [] en objet?
- 4. Silverlight 4.0: Comment convertir un byte [] en image?
- 5. Mappage d'un employé et d'un employé dans Fluent NHibernate
- 6. Comment convertir int [] en byte []
- 7. OLEVariant à .Net byte []
- 8. WPF Image à byte []
- 9. convertir objet UploadFile à un objet ZipFile
- 10. Convertir short to byte [] en Java
- 11. Programmation pour Android comme une personne aveugle
- 12. Liaison à un objet complexe dans Silverlight
- 13. IronPython - Convertir int en tableau byte
- 14. convertir un tableau d'octets à la liste <Byte>
- 15. Convertir l'application WPF à Silverlight
- 16. liste (de byte) à PictureBox
- 17. De byte [] à XmlTextReader
- 18. Comment convertir un tableau BYTE en CString dans MFC?
- 19. convertir un int [] en byte [] sans créer de nouveaux objets
- 20. passer un objet entre ViewModels dans Silverlight
- 21. Utilisation de Tritonus AudioSystem: Convertir PCM byte [] array en mp3 byte [] array
- 22. Comment convertir la chaîne à tout type
- 23. Android - convertir byte rgb_565 tableau en argb ou tableau rgb
- 24. lire un BYTE comme un DWORD dans Masm
- 25. Convertir un objet en objet hachage dans Mootools?
- 26. Création d'un objet dérivé à partir d'un objet de base existant dans .net
- 27. Comment convertir "byte gdicharset" en nom de script/langue?
- 28. Modéliser une relation de personne à personne dans Ruby-on-Rails en utilisant has_many: à travers
- 29. Comment convertir un objet Ruby à JSON
- 30. .NET/Silverlight: DataContractSerializer Byte Tableau et sockets: désérialisation EOF inattendue
J'ai le même problème lors de la conversion d'une application winforms existante en Silverlight. La fonction existante avec des fonctions illégales AllocHGlobal et FreeHGlobal est: public static byte [] RawSerialize (objet quelconque) { int rawsize = Marshal.SizeOf (n'importe quoi); IntPtr buffer = Marshal.AllocHGlobal (taille brute); Marshal.StructureToPtr (n'importe quoi, buffer, false); byte [] rawdatas = nouvel octet [rawsize]; Marshal.Copy (buffer, rawdatas, 0, rawsize); Marshal.FreeHGlobal (tampon); return rawdatas; } – Jeffrey