2009-08-17 4 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#으로 정렬 화에 여전히 새로운

,하지만 내가 어떻게 파일에 기록 할 바이트의 배열이 구조를 얻을 것입니다. 마샬링 트릭이 있습니까? 아니면 사용자 지정 메서드를 작성해야합니까? 닷넷 프레임 워크에서 제공

+0

참고로 구조는 참조 유형이 아닙니다. 가치 유형입니다. –

+1

제목이 변경되었습니다. 나는 웬일인지 여전히 참고를 썼다는 것을 알았다. – user142350

답변

5

를 사용하여 직렬화 메커니즘 : 당신은 당신의 유형에 <Serializable()> 속성을 추가해야합니다

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

.

+1

@ dnh828, @ Mehrdad의 답변에 추가하려면 변환하려는 객체 그래프의 모든 유형이 [Serializable] 속성으로 장식되어 있는지도 확인하십시오. –

+1

이 고정 길이 문자열에 serializable 속성을 적용하려면 어떻게해야합니까? ? – user142350

+0

필요가 없습니다. 그냥 '구조'에 적용하십시오. 'Char' 배열은 직렬화 가능합니다. –

관련 문제