즉, 데이터를 한 방향으로 이동하여 클래스에 넣고 싶지만 직렬화 작업 중에 데이터를 저장하지 못하게해야합니다. 그것에 대해 가장 좋은 방법은 무엇입니까?XmlSerializer : 속성을 deserialize 할 수 있지만 serialize를 중지 할 수 있습니까?
답변
좋아, 내가 시도 return null;
제안하지만 작동하지 않습니다; 역 직렬화에 실패합니다. 그러나 여기에 해결 방법은 다음과 같습니다
public List<Program> Programs
{
get
{
System.Diagnostics.StackTrace stackTrace = new System.Diagnostics.StackTrace(true);
for (int i = 0; i < stackTrace.FrameCount; i++)
{
if ("XmlSerializationWriterApplication".Equals(stackTrace.GetFrame(i).GetMethod().ReflectedType.Name))
{
return null;
}
}
return programs;
}
set { programs = value; }
}
동안은 아마 매우 확대됨에하지, 이것은 get
라고 누가 볼 수있는 스택 트레이스를 검사 - 그리고는 시리얼 라이저/작가 인 경우에, 아무 것도 반환하지 않습니다.
직렬화 프로세스에 대한 완전한 제어가 마음에 들면 인터페이스 ISerializable을 구현할 수 있습니다.
또한 특수 생성자를 구현하십시오.
편집 : 나는 IXmlSerializable을 의미했습니다. 존 감사합니다.
가장 간단한 방법은 Set
을 올바르게 수행하지만 항상 Get
에 고정 된 가짜 값을 반환하는 속성을 직렬화하는 것입니다. 예를 들어 속성이 Password
이라면 위의 디자인에 맞는 SerializablePassword
속성을 만들고 원본은 serialize하지 않아야합니다.
편집 다음
한 변화 포맷 애니의 샘플,이다 :
이[XmlIgnore]
public string Password { get; set; }
[XmlElement("Password")]
public string SerializablePassword
{
get { return null; }
set { Password = value; }
}
음, 그래, 나는 그것을 고려했다. 그러나, 만약 내가 get {return null; }, 내부적으로 값에 액세스 할 수 없었습니다. –
@ end-user :'SerializablePassword'를 설정하면'Password'와 같은 뒷받침 필드가 설정되어'Password'를 얻는 것이 정상적으로 작동합니다. –
+1 @ Steven : 내가 올바르게 이해한다면 이것과 비슷한 것입니까? 좋은 생각, 해킹 조금 .. :) [XmlIgnore] public string Password {get; } public string SerializablePassword { get {return null;} set {암호 = 값; } } – Ani
- 1. 현재 클래스로 deserialize 할 수 있습니까?
- 2. 내장 변환기가없는 속성을 어떻게 deserialize 할 수 있습니까?
- 3. 개체를 "$ this"로 deserialize 할 수 있습니까?
- 4. JSON을 Java의 트리로 deserialize 할 수 있습니까?
- 5. XmlSerializer가 여러 네임 스페이스의 특성을 deserialize 할 수 있습니까?
- 6. XmlSerializer를 Nullable <int>으로 deserialize 할 수 있습니까?
- 7. .NET 먹는 ID를 중지 할 수 있습니까?
- 8. VS에서 최근 프로젝트보기를 중지 할 수 있습니까?
- 9. Mediaplayer를 중지 할 수 없습니다.
- 10. GAE는 지속 할 수 있지만 (createQuery) 엔티티를로드 할 수 없습니다.
- 11. .NET 가비지 수집을 중지 할 수 있습니까?
- 12. SQL 쿼리를 일시 중지 할 수 있습니까?
- 13. WCF 서비스에서 System.Type을 serialize하고 Silverlight 클라이언트에서 deserialize 할 수 있습니까?
- 14. UITableViewCellAccessoryDetailDisclosureButton 속성을 편집 할 수 있습니까?
- 15. 서비스를 중지 할 수 없습니다.?
- 16. 녹음을 중지 할 수 없습니까?
- 17. 이 속성을 어떻게 추가 할 수 있습니까?
- 18. 모델 속성을 템플릿에 표시 할 수 있습니까
- 19. @synthesized 속성을 사용자 정의 할 수 있습니까?
- 20. C#/Json.net/어떻게 메시지를 deserialize 할 수 있습니까?
- 21. 스칼라에서 제네릭 형식을 serialize (및 나중에 deserialize) 할 수 있습니까?
- 22. AutoMapper와 속성을 결합/분할 할 수 있습니까?
- 23. freemarker에서 세션 속성을 제거 할 수 있습니까?
- 24. 동적 클래스에서 속성을 제거 할 수 있습니까?
- 25. GeometryDrawing의 속성을 어떻게 애니메이트 할 수 있습니까?
- 26. AutoMapper가 정적 속성을 매핑 할 수 있습니까?
- 27. Tuple 속성을 일반화 할 수 있습니까?
- 28. jdom에서 속성을 검색 할 수 있습니까?
- 29. 상속 된 회원에게 속성을 적용 할 수 있습니까?
- 30. 클래스에서 선언 할 때 컬렉션 속성을 초기화 할 수 있습니까
일반적인 XY 질문입니다. 왜 X인가? –
@ 한스 : 내 추측은 보안이다. –
참고로 XML Serializer는 C#과 관련이 없습니다. 그것은 .NET의 일부입니다. –