我有几十个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;
}
}
恕我直言,如果代码被写了很多次,这种方法有以下缺点:
那么,是否有人知道一个util会自动生成给定C结构的C#代码?或者在C#中如何舒适地使用大量C结构有一种完全不同的方式?