Estoy tratando de obtener los tipos de campo de una estructura insegura utilizando algunos campos fijos. Los campos fijos FieldType no devuelven el tipo real.C# Obtiene el tipo de campo fijo en la estructura insegura con reflexión
[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";
}
}
Salida:
Campo1: System.UInt32
Campo2: TestProjectNS.MyStruct+<Field2>e__FixedBuffer0
Campo3: System.UInt64
estoy buscando Field2
decirme que es sbyte
en lugar de TestProjectNS.MyStruct+<Field2>e__FixedBuffer0
¿Ha intentado tratar 'TestProjectNS.MyStruct + e__FixedBuffer0' como un tipo y ha marcado sus miembros? No me sorprendería si los búferes fijos se implementaran como estructuras anidadas. – CodesInChaos