Marshaling c estructuras en c #

Tengo una 'C' 'DLL' que puede tomar estructuras como entrada, tengo que llamar a esa DLL desde mi programa C #

as siguientes son las estructuras de muestra que tengo en C, tengo que ordenar esas estructuras en mi código C

¿Estoy haciendo lo correcto o lo incorrecto?

Estructuras C reales:
typedef struct procedure
{
  char code[8];
}procedure;


typedef struct datefield
{
  char date[10];
}datefield;


typedef struct p45_clsgs
{
  procedure p45_clsg;
  datefield p45_clsgdte;
}p45_clsgs;
C#
[StructLayout(LayoutKind.Sequential), Serializable]
struct procedure
{
//char code[];
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 8)]
public string code;
}
[StructLayout(LayoutKind.Sequential), Serializable]
struct datefield
{
//char date[10];
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 10)]
public string date;
}

struct p45_clsgs
{    
    public procedure p45_clsg;
    public datefield p45_clsgdte;
}

¿Mis estructuras C # son correctas para las estructuras C?

¿Cuál es la estructura C # equivalente para la siguiente estructura c

typedef struct p45_cldxed24
{
  procedure p45_cldxed[8];
}p45_cldxed24;

Respuestas a la pregunta(4)

Su respuesta a la pregunta