런타임 중에 또는 적어도 모델 초기화 중에 일부 내장 유형 (예 : DateTime)에 대해 다른 직렬화 방법을 전환해야합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 사용자 지정 모델 (RuntimeTypeModel.Add(typeof(DateTime), false).SetSurrogate(typeof(uint))
)을 사용하여 서로 게이트를 시도했지만 "이 형식의 데이터에는 inbuilt 동작이 있으며 모델에 추가 할 수 없습니다."오류가 발생했습니다.inbuilt 유형의 직렬화 메소드 대체하기
2
A
답변
2
나는 솔직히 말해서 내가 대단히 생각한 시나리오는 아니다. 대부분의 "inbuilt behavior"유형의 경우 구현을 변경하는 것이 실제로 매우 바람직하지 않을 것입니다. 왜냐하면 구현이 특정 protobuf의 일부이기 때문입니다. 그러나 DateTime
의 경우 TimeSpan
, Decimal
및 Guid
이 지원 될 수있는 대체 레이아웃이있을 수 있습니다. 내가 여기서하고 싶은 것이 정확히 무엇인지 물어봐도 될까요? 그것을하는 더 좋은 방법이있을 수 있기 때문에. 똑같이 중요한 것은 : 크기는 얼마입니까? 그냥 몇 가지 경우를 경우, 다음 심 속성은 예를 들어, 바람직 할 수 있습니다
public DateTime When {get;set;}
[ProtoMember(4)]
private uint WhenSerialized {
get { return YourConverter.FromDateTime(When); }
set { When = YourConverter.ToDateTime(value); }
}
그것은 또한 가능 할 수있다 이러한 유형의 처리 "대리"를 사용하려면,하지만 당신은에 대리를 사용할 수 없습니다 uint
으로 직접 연결하십시오. struct
또는 class
에 이, uint
인 대리인을 사용할 수 있습니다.
관련 문제
- 1. struts2의 HttpServletResponse에 대한 다른 inbuilt 메소드
- 2. JavaScript 직렬화 및 메소드
- 3. GWT에서 aspectj 메소드 직렬화
- 4. 다른 유형의 메소드 인수
- 5. OOP의 다른 유형의 메소드
- 6. 어떤 유형의 메소드 선언입니까?
- 7. 여러 유형의 확장 메소드
- 8. 여러 유형의 단일 메소드?
- 9. 유형의 확장 메소드
- 10. 컬렉션 유형의 객체를 직렬화 할 수 없습니다.
- 11. 스트림에서 여러 유형의 비 직렬화
- 12. JSON.NET 알 수없는 유형의 직렬화
- 13. Android 애플리케이션 가장 빠른 구문 분석 라이브러리 또는 inbuilt 메소드
- 14. 커스텀 포틀릿에서 inbuilt 포틀릿의 메소드 만 사용하는 방법은 무엇입니까?
- 15. 일반적인 유형의 메소드 가져 오기
- 16. TreeSet 유형의 메소드 remove() return
- 17. Type 유형의 비 직렬화 가능 객체를 직렬화 하시겠습니까?
- 18. 타겟 대체하기
- 19. JSON.net 고유 한 유형의 비 직렬화
- 20. 어떻게 사용자 정의 개체 유형의 목록을 직렬화
- 21. 다른 유형의 XML 문자열 역 직렬화
- 22. 모든 유형의 목록을 XML로 직렬화 하시겠습니까?
- 23. iphone inbuilt 메일 작곡가
- 24. Excel inbuilt 함수
- 25. DefaultMutableTreeNode inbuilt 트리 구조
- 26. Inbuilt 순열 생성기
- 27. inbuilt 함수에 액세스하는 방법?
- 28. inbuilt 메서드의 소스 getAvailableRam
- 29. inbuilt 갤러리에서 이미지 업로드
- 30. PhpUnit inbuilt 함수 모의
나는 설명하려고 노력할 것이다. 우리는 두 종류의 protobuf 스트림 소스를 가지고 있습니다 : 임베디드 장치와 SQL 데이터베이스. DateTime의 UInt32 형식 (1980.1.1에서 초 수)을 사용하는 내장 장치, 기본 protobuf-net 형식을 사용하는 데이터베이스 둘 다 처리 할 객체가 하나 필요하므로 shim 속성이 작동하지 않습니다. 또한 우리는 DateTime 속성을 가진 많은 protobuf 구조체를 가지고 있으며 너무 많은 바람직하지 않은 상용구 코드를 제공합니다. – GromHellscream
@GromHellscream 당신은 분명히 할 수 있습니다 : 임베디드 장치에서 'uint'로 정의 된 속성입니까? 또는 'DateTime'으로? –
임베디드 장치에서 'uint'로 정의되었습니다. – GromHellscream