从C结构生成C#结构

时间:2012-08-24 22:24:10

标签: c# code-generation

我有几十个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;
   }
}

恕我直言,如果代码被写了很多次,这种方法有以下缺点:

  1. 编码速度不快,不需要太多思考
  2. 代码可能包含许多可能长时间未被发现的错误
  3. 代码不易维护,因为C结构的更改需要在C#结构中进行相同的更改
  4. 那么,是否有人知道一个util会自动生成给定C结构的C#代码?或者在C#中如何舒适地使用大量C结构有一种完全不同的方式?

0 个答案:

没有答案