如何在运行时创建结构并将byte []指针转换为创建的结构?

时间:2019-05-22 05:38:08

标签: c#

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

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

Future<void> animateToPage(
    int page, {
    @required Duration duration,
    @required Curve curve,
  })

等...

现在,通过使用上述结构成员,在运行时创建结构。 我们将拥有包含数据的字节数组。我应该封送它,然后使用PointerToStructure或其他方法将其转换为创建的结构。

谢谢。

1 个答案:

答案 0 :(得分:0)

如果您确实要在运行时创建类型,请使用System.Reflection.Emit在运行时创建类型。

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

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