저는 메모리 버퍼에 직렬화하고자하는 객체가 있습니다.이 객체는 UART를 통해 임베디드 디바이스로 전송됩니다. Windows의 C# 환경에서 작업하고 있습니다.고도로 맞춤화 된 직렬화
는 내가 뭘하려는 것은 다음과 같이 두 개의 클래스를 생성하는 것입니다 :
class StatusElement
{
byte statusPart1;
byte statusPart2;
}
class DeviceCommand
{
byte Address;
byte Length;
StatusElement[] statusElements; // Can have an arbitrary number of elements in it
}
가 나는 직렬화, C#을 직렬화를 기반으로 바람직하게 무언가를 사용하고 싶습니다을에 두 번째 클래스를 변환하는 바이트 스트림
문제는 임베디드 장치가 정확한 시퀀스 (AddressByte, LengthByte .... ErrorCorrectionByte)를 허용하도록 하드 코딩되어 있으므로 스트림에 직렬화 메타 데이터를 추가하는 일반 C# 직렬화를 사용할 수 없다는 것입니다. 이것은 또한 Protobuf와 같은 다른 직렬화를 배제합니다.
내 질문은 : 필요한 출력을 얻기 위해 C# serialization을 사용자 정의 할 수 있습니까? 방법?
--- 업데이트 --- 도움을
감사합니다 여러분. 고려 사항 나는 반사 및 per-type 처리기를 사용하여 자체 미니 직렬기를 구현하기로 결정했습니다. 더 복잡하지만 더 많은 유연성과 자동화 기능을 제공합니다.
직접 작성해야합니다. –
예, 클래스를 적합한 바이트 스트림으로 직렬화하는 데 사용할 수있는 사용자 지정 논리를 작성하십시오. –
[protobuf-csharp-port] (http://code.google.com/p/protobuf-csharp-port/) –