| 

.NET C# Java Javascript Exception

4
Hallo

Das mache ich eigentlich regelmässig. Allerdings noch nie in einer Webanwendung.
Ich habe eine kleine Klasse die unter dem Pfad App_Code abgelegt ist. Da der Code ja erst zur Laufzeit kompiliert wird heisst auch die DLL immer anders. Dabei reklamiert die Deserialize Methode immer das die Klasse in der DLL nicht zu finden sei.

Ich könnte die Klasse jetzt in eine DLL auslagern und die im Projekt referenzieren. Allerdings ist es ein AddIn für eine Webanwendung. Da will ich keine Referenzen haben auf eine eigenen DLL. Aber wie deserialisiere ich eine Klasse die immer wieder in einer anderen DLL zu finden ist?

Hier die zwei Methoden zum Serialisieren und Deserialisieren.
public static void SaveToFile(Backup backup, string fileName)
{
//FileStream für die Datei erzeugen
using(FileStream fs = new FileStream(fileName, FileMode.Create))
{
//Das Objekt serialisieren
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs, backup);
}
}


public static Backup LoadFromFile(string fileName)
{
//Objekt für die Rückgabe erstellen
Backup backup = null;

//FileStream für die Datei erzeugen
using(FileStream fs = new FileStream(fileName, FileMode.Open))
{
//Das Objekt deserialisiern
BinaryFormatter bf = new BinaryFormatter();
backup = bf.Deserialize(fs) as Backup;
}
return backup;
}
28.09.2009
GENiALi 2,5k 1 2 8
1 Antwort
4
Hallo,

mit dem SerializationBinder kann dem BinaryFormatter mitgeteilt werden welche Klasse er erstellen soll (beim Deserialisieren). Diese Info ermittelt er standardmäßig aus den Informationen die beim Serialisieren vorhanden waren. Über die Binder-Eigenschaft kann dies jedoch geändert werden.

Der Name der Assembly in welcher die Klasse ist kann per Reflektion ermittelt werden:
typeof(Foo).Assembly.FullName


So sollte es funktionieren (probiert hab ich's nicht).

mfG Günther
28.09.2009
gfoidl 9,4k 3 5
OK. Meine Klasse macht jetzt keine Probleme mehr. Aber in meienr Klasse gibt es eine List<Foo> die jetzt bum macht. Die Foo kann ich aber nicht anpassen. Wenn ich das weiter spinne werde ich noch sehlig. :-/
GENiALi 28.09.2009

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH