Hallo zusammen,
ich würde gerne Binärdaten serialisieren, sprich ein byte[] in eine passende Struktur übertragen.
Ich habe mich jetzt schon ganz schwindelig gegoogelt. Vielleicht kann mir jemand von Euch was dazu sagen.
Hier mein momentaner Stand:
 
		                     
             C#-Quelltext
                        C#-Quelltext                    
           	 										| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 
 |  static public void setTelStructureByArray<T>(byte[] arr, ref T data)
 {
 data=(T)RawDeserialize(arr, typeof(T));
 }
 
 private static object RawDeserialize(byte[] rawdatas, Type anytype)
 {
 int rawsize = Marshal.SizeOf(anytype);
 if (rawsize > rawdatas.Length)
 return null;
 GCHandle handle = GCHandle.Alloc(rawdatas, GCHandleType.Pinned);
 IntPtr buffer = handle.AddrOfPinnedObject();
 object retobj = Marshal.PtrToStructure(buffer, anytype);
 handle.Free();
 return retobj;
 }
 | 
		
	  
Mein Problem ist nun: wenn in der Struktur ein Array mit flexibler Größe enthalten
ist, wird RawDeserialize nicht komplett ausgeführt, da hier die Bedingung
(rawsize > rawdatas.Length) zuschlägt.
Hat jemand eine Idee, wie man das Array behandeln kann ? Wie man vielleicht oben
schon sehen kann, suche ich hier nach einer generischen Lösung, die mit verschiedenen
structs, teils mit, teils ohne Array arbeiten kann.
Vielen Dank für alle Hinweise !
Ach ja, ich sag's gleich dazu: RawDeserialize ist nicht von mir, sie tut aber bis auf
den oben genannten Fall ziemlich genau das was ich brauche ...
Moderiert von  Christian S.: Topic aus Sonstiges (C# / .NET) verschoben am Mo 19.11.2007 um 15:20
Christian S.: Topic aus Sonstiges (C# / .NET) verschoben am Mo 19.11.2007 um 15:20