Feedback

C# - Kopierroutinen object <-> byte[]

Veröffentlicht von am 09.03.2006
(4 Bewertungen)
GFU-Schulungen  [Anzeige]

ASP.NET Core und Angular Komplett für .NET-Entwickler

Sie  lernen in drei (3) Tagen wie man mit  ASP.NET Core und den Technologien  MVC, Entity Framework, WebAPI und  Razor professionelle sowie moderne  Web-Anwendungsarchitekturen aufbaut.  Die Schulung ist der perfekte  Einstieg um insbesondere datengetriebene  und präsentationsorientierte  Applikationen auf Basis der robusten und  skalierbaren ASP.NET Core  Plattform zu erstellen. Nach der Veranstaltung kennen Sie die Konzepte von Angular und können Angular in neue und bestehende ASP.NET-Anwendungen einsetzen.

ASP.NET Core - Der Einstieg

In nur 3 Tagen lernen Sie, wie man mit ASP.NET Core und den Technologien MVC, Entity Framework, WebAPI und Razor professionelle Web-Anwendungs-Architekturen aufbaut. Diese Schulung ist der perfekte Einstieg, um datengetriebene und präsentations-orientierte Applikationen auf Basis der ASP.NET Core Plattform zu erstellen.

/// <summary>
/// Kopiert den Inhalt eines Objekts in ein Bytearray
/// </summary>
/// <param name="Source">Quelle aus der die Daten gelesen werden</param>
/// <returns>Liefert ein Bytearray mit den Daten des Objekts</returns>
public static byte[] CopyToByteArray(object Source)
{
  int len = Marshal.SizeOf(Source);
  byte[] arr = new byte[len];
  IntPtr ptr = Marshal.AllocHGlobal(len);

  Marshal.StructureToPtr(Source, ptr, true);
  Marshal.Copy(ptr, arr, 0, len);
  Marshal.FreeHGlobal(ptr);

  return arr;
}

/// <summary>
/// Kopiert den Inhalt eines Bytearrays in ein Objekt
/// </summary>
/// <param name="Source">Quelle aus der die Daten gelesen werden</param>
/// <param name="Destination">Ziel in der die Daten abgelegt werden sollen</param>
public static void CopyFromByteArray(byte[] Source, Object Destination)
{
  int len = Marshal.SizeOf(Destination);

  if (len != Source.Length)
    throw new Exception("CopyFromByteArray: SizeOf(Source) != SizeOf(Destination)");

  IntPtr ptr = Marshal.AllocHGlobal(len);
  Marshal.Copy(Source, 0, ptr, len);
  Marshal.PtrToStructure(ptr, Destination);
  Marshal.FreeHGlobal(ptr);
}

/// <summary>
/// Kopiert den Inhalt eines Bytearrays in ein Objekt
/// </summary>
/// <typeparam name="T">Typ des Zielobjekts</typeparam>
/// <param name="Source">Quelle aus der die Daten gelesen werden</param>
/// <returns>Liefert ein Objekt vom Typ T mit den Daten des Bytearrays</returns>
public static T CopyFromByteArray<T>(byte[] Source)
{
  int len = Marshal.SizeOf(typeof(T));

  if (len != Source.Length)
    throw new Exception("CopyFromByteArray: SizeOf(Source) != SizeOf(T)");

  IntPtr ptr = Marshal.AllocHGlobal(len);
  Marshal.Copy(Source, 0, ptr, len);
  T NewObject = (T)Marshal.PtrToStructure(ptr, typeof(T));
  Marshal.FreeHGlobal(ptr);

  return NewObject;
}

Abgelegt unter Kopierroutinen, object, byte, kopieren.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!