首页 > 解决方案 > 如何在运行时创建结构并将 byte[] 指针转换为创建的结构?

问题描述

通常我们在设计时创建结构,在运行时创建对象并分配数据。但我想在运行时创建结构。

我有结构成员及其类型,如下所示。

Name, String
Age , Int32
Hobies[], sring[]
Height, float
temp[], byte[]

ETC...

现在通过使用上述结构成员,在运行时创建结构。我们将拥有包含数据的字节数组。我应该将其编组并使用 PointerToStructure 或其他东西将其转换为创建的结构。

先感谢您。

标签: c#

解决方案


如果您真的想在运行时创建类型,请使用System.Reflection.Emit在运行时创建类型。

但是,如果需要访问该结构的代码是本机代码,您只需将字节数组写入指针Marshal.Copy,只要内存结构匹配,它就可以与将其作为结构处理的本机代码正常工作。本机代码永远不会检查提供的指向内存块的指针是否是已定义的结构或其他东西,只会使用指针偏移量访问成员。

请评论实际需要,如果您需要,我将编辑答案以提供更详细的帮助。


推荐阅读