タイトルはそれを要約しています。電話できるようになりたい
Foo f = getStruct<Foo>(..)
メソッドで新しい Foo オブジェクト (構造体) を作成し、データを入力して返しますか?
また、 < T > 型のコンストラクターは何と呼ばれますか? 何を検索する必要があるのか 確信があるため、Google検索が失敗しています..
さらに、作成できるすべての構造体に .raw フィールドがあることがわかっています。その .raw フィールドに入力できるようにしたいです。
これは本質的に私がやりたいことです。
public T getStruct<T>(UInt32 sector) {
<T> foo = new <T>;
for (int i=0; i<100; i++) foo.raw[i]=0;
return foo;
}
構造体の形式は次のとおりです。
StructLayout(LayoutKind.Explicit)]
public unsafe struct RunBlock_t {
[System.Runtime.InteropServices.FieldOffset(0)] public fixed byte raw[512];
[System.Runtime.InteropServices.FieldOffset(0)] public UInt16 run_id;
[System.Runtime.InteropServices.FieldOffset(2)] public UInt16 magic;
[System.Runtime.InteropServices.FieldOffset(510)] public UInt16 checksum;
}
この関数は、.raw ポインターとセクターを別の関数に渡します。別の関数はそのセクターをディスクからロードし、バイト単位で内容を .raw にコピーします。
このようにして、任意の構造体を作成し、ディスクからすばやく簡単にデータを取り込むことができます。これはあまり C# フレンドリーではありませんが、それを必要とする他の外部依存関係があります。
サンクス!