내 자신의 객체에 [serializable] 메타 태그를 추가하여 직렬화 할 수 있습니다. 이제 직렬화가 필요한 타사 라이브러리를 사용합니다. 코드를 검사했는데 문제가되지 않아야합니다. 타사 코드를 변경하지 않고이 문제를 해결할 수있는 방법이 있습니까?C# : 타사 객체를 직렬화 가능하게 만들기
답변
내 조언은 다음과 같습니다. 데이터이 아닌 구현을 직렬화하십시오. 제 3 자 객체가 존재한다는 사실은 데이터와 관련이 없습니다. 이것이 구현 세부 사항입니다. 마찬가지로, 항상 동일한 조언을 제공합니다. 도이 복잡 해지면 우선 데이터을 나타내는 별도의 DTO 모델을 도입하여 구현 상태를 따로 분리하고 현재 상태를 DTO. 따라서 저장소에 영향을주지 않고 구현 변경 사항을 처리 할 수 있으며 그렇지 않은 경우 직렬화 할 수없는 객체를 직렬화 할 수 있습니다.
예를 들어 protobuf-net을 사용하면 런타임에 모든 유형의 순차 나열 정보를 제공 할 수 있고 b : 까다로울 때 자동으로 사용할 "대리자"를 제공하지만 DTO 모델은 더 간단하고 유지하기 쉽습니다.
[Serializable]
의 사용은 BinaryFormatter
을 제안합니다. 제 생각에 은 거의 없습니다BinaryFormatter
은 구현 세부 정보를 사용하므로 어떤 유형의 저장소에도 적합합니다.
내가 직렬화해야하는 객체는 이미 DTO 객체의 일부이며 제공되는 webcomponents (mvc 컨트롤 툴킷에서 제공)에서 사용됩니다. 그러므로 직렬화 할 수 있어야합니다. – Patrick
@Patrick DTO에서 직렬화 할 수없는 것이 있다면 DTO가 아닙니다 –
것은 mvc controlstoolkit이 트래커 객체에 그리드의 변경 사항을 추적하도록 제공한다는 것입니다. 예를 들어 다음은 List
유형이 공개 된 경우 XmlSerializer
을 사용하여 원하는 것을 수행 할 수 있어야합니다.
이 more information on this here
직렬화를 그리고로 XML 문서에서 개체를 직렬화 복원합니다. XmlSerializer를 사용하면 개체를 XML로 인코딩하는 방법을 제어 할 수 있습니다.
실제로 많은 유연성을 제공하지는 않습니다 ... –
정확하게 하위 클래스를 가져와 직렬화 할 수있게 만드십시오.
XmlSerializer를 사용하는 경우 생성자를 잊지 마십시오. – Candide
@Ingenu, 생성자에 대한 특별한 점은 무엇입니까? –
@BuhBuh'XmlSerializer'에서 사용할 매개 변수없는 public 생성자가 필요합니다. 그러나'[Serializable]'은'XmlSerializer'가 아니라'BinaryFormatter'와 관련이 있습니다. –
어셈블리를 분해하거나 직렬화 가능 속성을 주입 한 다음 다시 어셈블하는 것과 같이 좀 더 극단적 인 작업을 할 수 있도록 어댑터를 작성하거나 준비하십시오.
O_o. 그것은 매우 극단적 인 경우입니다. 대상 클래스가 봉인 된 경우 복제 dto를 만들 수있는 권한이 없으며 이진, XML, JSON 또는 CSV로 serialize 할 수 없으며 일부 다른 깨지지 않는 힘이 코드에서 직렬화를 수행하는 데 어려움을 겪고 있습니다. IL에서 수정을해야합니다. – Oybek
- 1. JTextArea를 직렬화 가능하게 만들기
- 2. 데이터 모델 클래스를 직렬화 가능하게 만들기
- 3. PHP에서 array_search를 사용하여 객체를 검색 가능하게 만들기
- 4. jquery - 드롭 된 객체를 드래그 가능하게 만들기
- 5. 항목을 드래그 가능하게 만들기
- 6. JTable을 스크롤 가능하게 만들기
- 7. UITextView를 스크롤 가능하게 만들기
- 8. 데이터베이스를 확장 가능하게 만들기
- 9. 일부보기를 재사용 가능하게 만들기
- 10. GWT를 크롤링 가능하게 만들기
- 11. UITableViewCell을 편집 가능하게 만들기
- 12. JXTreeTable을 편집 가능하게 만들기
- 13. 이미지를 스크롤 가능하게 만들기
- 14. 객체를 XML로 직렬화 Java
- 15. C++에서 객체를 직렬화 및 비 직렬화 할 수 있습니까?
- 16. C++ 객체를 자동으로 직렬화 할 수 있습니까?
- 17. 객관적인 C plist에 자바 객체를 직렬화
- 18. JSON 객체를 C# 객체에 비 직렬화
- 19. C에서 비 직렬화 가능 객체를 문자열로 변환
- 20. NameValueCollection을 직렬화 가능하게 만드는 방법은 무엇입니까?
- 21. C# 역 직렬화 역 직렬화
- 22. 객체를 직렬화 및 사용 I 파일에 객체를 직렬화 할 수
- 23. 자바 스크립트 객체를 직렬화
- 24. JsonDeserializer 객체를 직렬화 실패
- 25. 페이지를 비밀번호로만 액세스 가능하게 만들기
- 26. 콤보 상자를 편집 가능하게 만들기
- 27. 추가 요소를 드래그 가능하게 만들기
- 28. JqGrid 셀을 편집 가능하게 만들기
- 29. enum을 DataGridview에 바인드 가능하게 만들기
- 30. WPF에서 DataGrid를 편집 가능하게 만들기
하위 클래스가 아니어도 두 개의 동기화 된 앱 도메인간에 데이터를 전달할 때 적합합니다. – vulkanino
이것은 어떤 serializer ('BinaryFormatter'입니까?) 및 b : 형식이 무엇인지에 따라 많이 달라집니다. 개인적으로는 별도의 데이터 모델을 사용합니다. –