Создание структуры C# из структуры C
У меня есть несколько десятков структур C, и мне нужно использовать их в C#. Типичная структура C выглядит следующим образом:
typedef struct _UM_EVENT
{
ULONG32 Id;
ULONG32 Orgin;
ULONG32 OperationType;
ULONG32 Size;
LARGE_INTEGER Time;
HANDLE ProcessId;
HANDLE ThreadId;
} UM_EVENT, *PUM_EVENT;
Чтобы использовать эту структуру в C#, я объявляю ее в C#, а затем выполняю сортировку, что можно сделать примерно так:
public struct UM_EVENT
{
public UInt32 Id;
public UInt32 Orgin;
public UInt32 OperationType;
public UInt32 Size;
public UInt64 Time;
public IntPtr ProcessId;
public IntPtr ThreadId;
}
private void Load(IntPtr event) {
unsafe
{
UM_EVENT header = *(UM_EVENT*)event;
}
}
ИМХО, у этого подхода есть следующие недостатки, если код пишется много раз:
- Кодирование не быстрое и не требует много размышлений
- Код, вероятно, будет содержать много ошибок, которые могут оставаться незамеченными в течение длительного времени
- Код не очень удобен в обслуживании, потому что изменение структуры C требует того же изменения в структуре C#
Итак, кто-нибудь знает утилиту, которая автоматически генерирует представленный код C# из данных структур C? Или есть совершенно другой способ, как удобно использовать большое количество структур C в C#?