选自C结构自动生成C#结构(Generating C# structure from C struc

2019-09-21 15:57发布

我有几十个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. 该代码可能会包含很多的bug,可以不被发现的很长一段时间
  3. 该代码不是很维护,因为在C结构的变化,需要在C#中的结构相同的变化

因此,没有任何人知道一个实用程序,将产生从自动给出C结构所呈现的C#代码? 或者是有一个完全不同的方式如何舒适地使用在C#中的大量C结构的?

文章来源: Generating C# structure from C structure