我有几十个 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 结构?