2016-08-18 3 views
1

protobuf-net (Marc Gravell 구현)에는 프로토 타입이 직렬화 될 형식을 지정할 때마다 사용할 사용자 지정 Serializer/Deserializer를 지정하는 방법이 있습니까? 그런protobuf-net에서 주어진 유형을 serialize/deserialize 할 때 사용할 사용자 정의 메소드를 지정하는 방법이 있습니까?

뭔가 :

[ProtoContract] 
class Foo 
{ 
    [ProtoMember(1), ProtoSerializer(BarSerializer)] 
    public Bar Something { get; set; } 
} 

class BarSerializer 
{ 
    public void Serialize(object value, Protowriter writer) 
    { 
     //do something here with writer... 
    } 
} 

나는 문서 보았지만 아무것도 찾을 수 없습니다. 이것은 Protowriter을 직접 사용하여 객체를 직렬화 할 수 있음을 알고 있습니다 (예 : DataTable 예).

는 내가 뭘하고 싶은 것은 단지 특정 유형에 대한 사용자 지정 serializer를 사용하고 이미 구현 된 다른 유형의 기본 구현을 사용하는 것입니다 (예 : INT, 문자열, ...) 기본적으로

답변

1

없음. 그러나 당신이 무엇 유형 (대리 유형) 직렬화에 사용되는 쓰기입니다. 이 유형은 예를 들어, (중, 보통 대리에 선언 된) 두 가지 유형 사이의 변환 연산자를 가지고, 라이브러리에 등록 할 필요가있다 :

RuntimeTypeModel.Default[typeof(Foo)].SetSurrogate(typeof(FooSurrogate)); 

도서관은 여전히 ​​와이어에 기록하는 방법을 FooSurrogate 제어합니다. 현재 형식의 출력을 직접 제어 할 수있는 API는 없습니다. 그러나 ProtoWriter에서 시작한다면 당연히 모든 것을 수동으로 수행 할 수 있습니다.