我正在尝试使用一些固定字段获取不安全结构的字段类型。 固定字段FieldType不返回实际类型。
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public unsafe struct MyStruct
{
public UInt32 Field1;
public fixed sbyte Field2[10];
public UInt64 Field3;
}
void Test()
{
var theStruct = new MyStruct();
string output = "";
foreach (FieldInfo fi in theStruct.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance))
{
output += fi.Name + ": " + fi.FieldType.ToString() + "\r\n";
}
}
输出:
字段1:System.UInt32
字段2:TestProjectNS.MyStruct+<Field2>e__FixedBuffer0
字段3:System.UInt64
我想知道 Field2
是否为 sbyte
而不是 TestProjectNS.MyStruct+<Field2>e__FixedBuffer0
TestProjectNS.MyStruct+e__FixedBuffer0
视为一种类型并检查其成员吗?如果固定缓冲区被实现为嵌套结构体,那也不会让我感到惊讶。 - CodesInChaos