如何在结构中反映固定宽度字节[]字段信息



我正试图找到一种方法来处理structs上字段的反射字段信息。我的结构通常包含固定宽度的字节数组。当我在遍历结构字段列表时遇到其中一个数组时,我需要了解一个字段是否是数组,并与其他字段类型不同地处理该数组。我该怎么做?

举个例子,这里有一个示例结构,下面的方法也阐述了我的问题?

[StructLayout(LayoutKind.Sequential, Pack = 1)]
public unsafe struct MyStruct
{
     public int IntegerVal;
     public unsafe fixed byte MyByteBuff[20];
}

//Later in code...
public static void WorkWithStructs(Type t) //t will always be a struct
{
    foreach (var f in t.GetFields())
    {
        if (f.FieldType == typeof(int)
        { 
            //Do Int work
        } 
        else if (???)  //Test for a fixed-width byte array
        {
            // If MyStruct were passed to this method, this is where I 
            // would need to handle the MyByteBuff field.  Specifically, 
            // I need to discern the object type (in this case a byte) 
            // as well as the length in bytes.
        }
    }
}

您可以检查字段类型上是否存在FixedBufferAttribute自定义属性(在类型.的CustomAttributes集合中找到

在您的情况下,您可以检查是否存在与以下属性匹配的属性:

[FixedBufferAttribute(typeof(Byte), 20)]

(添加FixedBufferAttribute是自动完成的——如果您尝试手动添加,则会出现一个错误,提示您使用fixed关键字)。

相关内容

  • 没有找到相关文章