1

この構造体に一致する形式のバイナリ データを含むファイルがあります。

struct MyStruct {
    UInt32 count;
    UInt32[] items;
}

任意の数のアイテムが存在する可能性があるため、バイナリ データは任意の長さにすることができますが、アイテムの数は count で定義されます。使用Marshal.PtrToStructureすると、可変数の項目があるこのバイナリ形式が許可されないようです? 属性を使用すると、項目の配列のサイズを設定できますが、これは定数でなければなりませんcount。データの読み取り中に調べるように指示する方法はありませんか?

XML でフォーマットを定義し、それを使用して独自のコードで構造体に読み込むことを考えましたが、これは多くの重複データになるため、ファイル形式が変更された場合、XML と構造体を変更する必要があります。 、単なる構造体ではなく。

そして、itemsフィールドでカスタム属性を使用し、データを読み取る独自のコードを作成することを考えましたが、構造体のフィールドを列挙するには、リフレクションを使用する必要がありますか? どれが遅いですか?

(手動で読むこともできますが、質問のために構造体をトリミングしました。構造が変更された場合に読み取りコードを変更する必要はありません)

4

1 に答える 1