Probleme mit tiefer Kopie

22/10/2007 - 21:55 von Jens Thiel | Report spam
Hallo,



ich verwende folgende bewàhrte Funktion um eine tiefe Kopie zu ziehen:



public static T DeepClone<T>(T item)

{



MemoryStream stream = new MemoryStream();

BinaryFormatter formatter = new BinaryFormatter();

formatter.Serialize(stream, item);

stream.Position = 0;



T obj= default(T);



try

{

obj = (T)formatter.Deserialize(stream);



}

catch (Exception e)

{

System.Windows.Forms.MessageBox.Show(e.Message);

}



return obj;



}



Intern (also in meiner C# Projekt Souloution) funktioniert das auch
einwandfrei und jetzt kommts: Die Funktion wird in einem COM Server
werwendet. Wird sie indirekt von dem COM Clienet aufgerufen erhalte ich
folgende Exception: "Das Objekt des Typs Namespace.MyTestObjekt kann nicht
in den Typ Namespace.MyTestObjekt umgewandelt werden. Hà ? ist doch der
gleiche Typ, wieso gint es da Probleme ?



Danke!
 

Lesen sie die antworten

#1 Stefan Braumeister
23/10/2007 - 22:09 | Warnen spam
Jens Thiel schrieb:
Hallo,



ich verwende folgende bewàhrte Funktion um eine tiefe Kopie zu ziehen:



public static T DeepClone<T>(T item)

{



MemoryStream stream = new MemoryStream();

BinaryFormatter formatter = new BinaryFormatter();

formatter.Serialize(stream, item);

stream.Position = 0;



T obj= default(T);



try

{

obj = (T)formatter.Deserialize(stream);



}

catch (Exception e)

{

System.Windows.Forms.MessageBox.Show(e.Message);

}



return obj;



}



Intern (also in meiner C# Projekt Souloution) funktioniert das auch
einwandfrei und jetzt kommts: Die Funktion wird in einem COM Server
werwendet. Wird sie indirekt von dem COM Clienet aufgerufen erhalte ich
folgende Exception: "Das Objekt des Typs Namespace.MyTestObjekt kann nicht
in den Typ Namespace.MyTestObjekt umgewandelt werden. Hà ? ist doch der
gleiche Typ, wieso gint es da Probleme ?



Da sich scheinar sonst niemand meldet.

Wenn du zwei gleiche Typen hast die in unterschiedlichen
ApplicationDomains laufen, dann erhàlst du obigen Fehler.

Sowas ist z.B. der Fall wenn du einen PluginMechanismus entwickelt hast,
und dort untereinander Objekte gleichen Typs austauscht. Es hilft dann
ein Laden in eine gemeinsame ApplicationDomain.

Zu deinem Codeschnipsel kann ich dir leider keine Lösung liefern, da es
nicht innerhalb dieses Codes zu lösen ist.




Danke!


Ähnliche fragen