我有几十个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;
}
}
恕我直言,这种做法有以下缺点如果代码被写入了很多次:
- 编码并不快,而且不需要太多的思考
- 该代码可能会包含很多的bug,可以不被发现的很长一段时间
- 该代码不是很维护,因为在C结构的变化,需要在C#中的结构相同的变化
因此,没有任何人知道一个实用程序,将产生从自动给出C结构所呈现的C#代码? 或者是有一个完全不同的方式如何舒适地使用在C#中的大量C结构的?