c# - 如何在运行时创建结构并将 byte[] 指针转换为创建的结构?
问题描述
通常我们在设计时创建结构,在运行时创建对象并分配数据。但我想在运行时创建结构。
我有结构成员及其类型,如下所示。
Name, String
Age , Int32
Hobies[], sring[]
Height, float
temp[], byte[]
ETC...
现在通过使用上述结构成员,在运行时创建结构。我们将拥有包含数据的字节数组。我应该将其编组并使用 PointerToStructure 或其他东西将其转换为创建的结构。
先感谢您。
解决方案
如果您真的想在运行时创建类型,请使用System.Reflection.Emit
在运行时创建类型。
但是,如果需要访问该结构的代码是本机代码,您只需将字节数组写入指针Marshal.Copy
,只要内存结构匹配,它就可以与将其作为结构处理的本机代码正常工作。本机代码永远不会检查提供的指向内存块的指针是否是已定义的结构或其他东西,只会使用指针偏移量访问成员。
请评论实际需要,如果您需要,我将编辑答案以提供更详细的帮助。
推荐阅读
- git - 如何使用“git clone”创建共享仓库?
- jquery - jQuery仅向一个元素添加类
- azure - 有关受保护项目 PowerShell 的 ASR 复制存储帐户详细信息
- html - 如何将 Excel 工作表的格式和全范围转换为 HTML 电子邮件正文?
- containers - 是否可以使用 ctr 命令运行带有端口转发的容器?
- angular - 如何使用硒单击角度应用程序按钮
- java - Java Swing 自定义滑块图像
- swift - 想要翻转两个视图,以便一个视图隐藏而其他视图快速显示
- c++ - 如何找到“弱”内存泄漏
- python - 导入 neupy.algorithms 时出现语法错误