この構造体に一致する形式のバイナリ データを含むファイルがあります。
struct MyStruct {
UInt32 count;
UInt32[] items;
}
任意の数のアイテムが存在する可能性があるため、バイナリ データは任意の長さにすることができますが、アイテムの数は count で定義されます。使用Marshal.PtrToStructure
すると、可変数の項目があるこのバイナリ形式が許可されないようです? 属性を使用すると、項目の配列のサイズを設定できますが、これは定数でなければなりませんcount
。データの読み取り中に調べるように指示する方法はありませんか?
XML でフォーマットを定義し、それを使用して独自のコードで構造体に読み込むことを考えましたが、これは多くの重複データになるため、ファイル形式が変更された場合、XML と構造体を変更する必要があります。 、単なる構造体ではなく。
そして、items
フィールドでカスタム属性を使用し、データを読み取る独自のコードを作成することを考えましたが、構造体のフィールドを列挙するには、リフレクションを使用する必要がありますか? どれが遅いですか?
(手動で読むこともできますが、質問のために構造体をトリミングしました。構造が変更された場合に読み取りコードを変更する必要はありません)