2009-05-22 3 views
4

Compact Framework를 사용하여 개체를 이진 serialize하는 방법은 무엇입니까?

struct _NETINFO { } 

그리고 Compact Framework를 사용하여 Byte []로 변환하려면 다음과 같이 시도해보아야합니다.

_NETINFO info = new _NETINFO(); 
byte[] buffer = (byte[])info; 

그리고 작동하지 않습니다! 내가 찾은 유일한 다른 해결 방법은 CF에서 사용할 수없는 BinaryFormatter를 사용하는 것입니다.

다른 설교?

+0

전체 프레임 워크에서 BinaryFormatter 클래스를 추출하는 방법은 무엇입니까? – Marcel

+0

유용한 정보는 http://www.codeproject.com/KB/cs/CF_serializer.aspx 또는 http://www.freewebs.com/compactFormatter/About.html 또는 http : //www.freewebs.com/compactFormatter/About.html에서 찾을 수 있습니다. /www.sharpserializer.com/en/download/index.html – Nik

답변

0

구조체는 얼마나 복잡합니까? 당신이 다른 것들에 대한 포인터가없는 간단한 일을 위해, 그것은 꽤 쉽게 :

var info = new _NETINFO(); 
    var buffer = new byte[Marshal.SizeOf(info)]; 
    var handle = GCHandle.Alloc(info, GCHandleType.Pinned); 
    try 
    { 
     Marshal.Copy(handle.AddrOfPinnedObject(), buffer, 0, buffer.Length); 
    } 
    finally 
    { 
     handle.Free(); 
    } 

짧다 안전하지 않은 코드를 사용하여도 버전이있다,하지만 "안전하지 않은 코드 허용"과 어떤 이유로 돌려 요구하는 어떤 사람들은 당황 스럽다.

위의 관리 코드는 복사 (또는 역순으로 바이트 배열을 구조체에 캐스팅)하지 않고도이 작업을 수행 할 수 있지만 슬프게도 그렇지 않습니다.

관련 문제