Avatar billede CyMEN Nybegynder
25. marts 2009 - 20:02 Der er 1 kommentar

Logning af tidligere objekter

Jeg har et program som skal logge tidligere stadier i programforløbet.

Der kommer nye ændringer i objekternes tilstand konstant og det skal så være muligt at gå tilbage til et tidligere tidspunkt og se hvad objektets tilstand var.
Lige pt. har jeg implementeret det ved hjælp af en DeepClone funktion som anvender MemoryStream():

public static object DeepClone(object obj)
{
      object objResult = null;
      using (var ms = new MemoryStream())
      {
            var bf = new BinaryFormatter();
            bf.Serialize(ms, obj);
            ms.Position = 0;
            objResult = bf.Deserialize(ms);
      }
      return objResult;
}

Det virker som det skal, men jeg oplever problemer med performance. Da ændringerne af objekterne sker ca hver 100ms hvorefter der sker en kloning.

Jeg vil gerne vide om der er nogen der har nogle alternativer til hvordan det kan gøres bedre og nemmere? Programmet er bygget op såldedes at hver gang objekterne ændrer sig tilføjes en linie i et ListView. Når der klikkes på den enkelte linie vises objektet som det så ud på DET tidspunkt.

Håber nogen kan hjælpe og forstår min problemstilling..
Avatar billede bvli Praktikant
26. marts 2009 - 00:45 #1
Hej.

Prøv at checke op på Memento-mønstret.

http://en.wikipedia.org/wiki/Memento_pattern

/Bjarke
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester