¿Cómo hago un tipo de usuario de matriz de bytes de tamaño fijo en C #?

Estoy convirtiendo un viejo programa de Visual Basic a C #. Envía mensajes a alguna maquinaria industrial a través de ethernet. Para hacer esto, ensambla un flujo de bytes a partir de fragmentos definidos por el usuario de tamaño fijo.

La mayoría de estos fragmentos son pequeños y en C # es fácil crear estructuras de unos pocos bytes o ints y controlar su tamaño y diseño utilizando StructLayout, por ejemplo

[StructLayout(LayoutKind.Sequential, Pack = 1)]

... así que cuando entramos en un espacio no administrado para hacer una copia en bytes, no tenemos problemas de orden de bytes ni de relleno.

Pero algunas de las estructuras VB6 son matrices grandes, por ejemplo,

Private Type SEND_MSG_BUFFER_320_BYTES
    bytes(0 To 319) As Byte  '320 bytes
End Type

y estoy luchando con cómo hacer esto en C #. Puedo hacer una matriz de tamaño fijo en una clase, por ejemplo,

  [StructLayout(LayoutKind.Sequential, Pack = 1)]
  public class SOME_BYTES
  {
      public byte[] b = new byte[320];
  } 

pero para hacer la copia en bytes, necesito poder descubrir el tamaño de esto en tiempo de ejecución y System.Runtime.InteropServices.Marshal.SizeOf devuelve un4 para esto.

Cualquier sugerencia de cómo hacer esto será muy apreciada.

Respuestas a la pregunta(3)

Su respuesta a la pregunta