使用反射模仿c#数组初始化器的行为

本文关键字:初始化 数组 反射 | 更新日期: 2023-09-27 18:04:48

使用ILDasm对一些c#代码进行逆向工程,我发现编译器使用System.Runtime.CompilerServices.RuntimeHelper.InitializeArray方法初始化包含几个基本类型常量值的数组。

看起来它为每个数组大小(以字节为单位)创建了一个特殊的结构,并用[StructLayout]属性标记它。这很简单。但是还有一个包含实际数据的字段。我如何在Reflection.Emit方面创建一个像这样的字段,并用任意字节填充它?

使用反射模仿c#数组初始化器的行为

我认为你使用ModuleBuilder。