2009-08-17 32 views
3

My.Computer.FileSystem.WriteAllBytesなどを使用して固定長文字列で構成される構造体をファイルに書きたいとします。構造体を.NETのバイト配列に変換する

私はVB.Netに変換した固定長の文字列を持つVB6プロジェクトを使用しています。

Structure Record 
     <VBFixedString(22),System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray,SizeConst:=22)> Public tim() As Char 
     <VBFixedString(130),System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray,SizeConst:=130)> Public des() As Char 
     <VBFixedString(2),System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray,SizeConst:=2)> Public crlf() As Char 
    End Structure 

C#でマーシャリングするのはまだ新しいですが、この構造体をファイルに書き込むためにバイト配列にどのようにして取得しますか?マーシャルトリックがありますか?またはカスタムメソッドを記述する必要がありますか? .NETフレームワークが提供する

+0

補足として、構造体は参照型ではありません。値の型です。 –

+1

タイトルが変更されました。私はそれを知っていましたが、何らかの理由で依然として参照を書きました。 – user142350

答えて

5

使用のシリアル化メカニズム:

Dim formatter As New BinaryFormatter 
formatter.Serialize(outputFileStream, objectInstance) 

あなたはあなたのタイプに<Serializable()>属性を追加する必要があります。

+1

@ dnh828 @ Mehrdadの答えに追加するには、変換しようとしているオブジェクトグラフのすべての型が[Serializable]属性で装飾されていることを確認してください... –

+1

これらの固定長の文字列にserializable属性を適用する方法? – user142350

+0

する必要はありません。それを '構造 'に適用するだけです。 'Char'配列は直列化可能です。 –

関連する問題