14. september 2006 - 15:04Der er
30 kommentarer og 1 løsning
Hvordan gemmer jeg et objekt i en cookie?
Hejsa
Jeg har en et objekt som fx. er et adresse objekt med vejnavn, husnr, post.nr etc. Dette objekt vil jeg gerne gemme i en cookie. Cookie delen har jeg styr på, men jeg har fået at vide at jeg har behov for at serialisere mit objekt inden jeg smider det ned i en cookie... Jeg har ledt på nettet, men har ikke kunne finde et brugbart eksempel.
Er der nogen herinde der kunne hjælpe med et eksempel på hvordan jeg kan serialisere mit objekt.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
binære serialisering + base 64 encoding xml serialisering custom serialisering (items separeret af komma eller semikolon eller ...) id som er index i databasen
hmmmm jeg har fundet et lille simpelt eksempel, men det giver mig ikke lige det jeg har brug for.
I mit tilfælde har jeg en etitetsklasse, der indkapsler noget data. Denne entitets klasse vil jeg gerne gemme i en cookie. Dvs. at jeg gerne vil kunne serialisere denne entitets klasse.
Nu er det jo sådan at entitets klasser jo ikke må have andre funktioner. De skal jo bare holde på data.
Skal jeg lave en ny klasse, hvori min serialiserings metoder ligger? Kunne egentligt godt tænke mig at se et eksempel, hvor en entitetsklasse bliver serialiseret og gemt i en cookie, og naturligvis en deserialiserings eksempel af det. :-)
hmmm fordi en cookie.value er af type string, skal jeg konvertere mit serialiserede objekt fra byte stream til en string. Kan ikke finde noget eksempel på dette på nettet :-(
Det objekt jeg skal gemme er et meget lille objekt, det gemmer kun en adresse og et postnr. Mit objekt er derfor af typen ShortAddress, som er min entitetsklasse.
Det er når jeg prøver at caste den til ShortAddress at den brokker sig -> (ShortAddress)ByteArrayToObject(Convert.FromBase64String(serializedAddressObject));
Nu skal jeg bare prøve det med Arrays af objekter.....giver point....når det er er en succes...holder lige denne åbent, hvis der skulle dukke noget op. :-)
using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; using System.Collections.Generic;
namespace E { public class Ser<T> { public static byte[] Object2ByteArray(T o) { MemoryStream ms = new MemoryStream(); BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(ms, o); return ms.ToArray(); } public static string Object2String(T o) { return Convert.ToBase64String(Object2ByteArray(o)); } public static T ByteArray2Object(byte[] b) { MemoryStream ms = new MemoryStream(b); BinaryFormatter bf = new BinaryFormatter(); ms.Position = 0; return (T)bf.Deserialize(ms); } public static T String2Object(string s) { return ByteArray2Object(Convert.FromBase64String(s)); } } public class MainClass { public static void Main(string[] args) { DateTime dt1 = DateTime.Now; Console.WriteLine(dt1); DateTime dt2 = Ser<DateTime>.String2Object(Ser<DateTime>.Object2String(dt1)); Console.WriteLine(dt2); List<string> lst1 = new List<string>(); lst1.Add("A"); lst1.Add("BB"); lst1.Add("CCC"); foreach(string s in lst1) Console.WriteLine(s); List<string> lst2 = Ser<List<string>>.String2Object(Ser<List<string>>.Object2String(lst1)); foreach(string s in lst2) Console.WriteLine(s); Console.ReadLine(); } } }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.