Programing

DataContractSerializer를 사용하여 직렬화 할 때 속성을 무시하려면 어떻게해야합니까?

lottogame 2020. 7. 22. 21:37
반응형

DataContractSerializer를 사용하여 직렬화 할 때 속성을 무시하려면 어떻게해야합니까?


.NET 3.5SP1 및 DataContractSerializer를 사용하여 클래스를 직렬화하고 있습니다. SP1에서는 클래스에 DataContract / DataMember 특성을 포함 할 필요가 없도록 전체 동작을 직렬화하기 위해 동작을 변경했습니다. 이것은 내가 사용하는 동작이지만 이제 serializer에서 하나의 속성을 무시해야합니다. 이 작업을 수행하는 한 가지 방법은 DataContract 특성을 클래스에 추가하고 포함하려는 모든 멤버에 DataMember 특성을 추가하는 것입니다. 그러나 이것이 효과가 없다는 이유가 있습니다.

그래서 내 질문은, DataContractSerializer가 속성을 무시하게하는 데 사용할 수있는 속성이나 무언가가 있습니까?


IgnoreDataMemberAttribute ?


또한 DataContractSerializer는 [Serializable]으로 표시된 항목을 직렬화하고 .NET 3.5 SP1 이상에서 표시되지 않은 유형을 직렬화하여 익명 형식의 직렬화를 지원할 수 있습니다.

따라서 클래스를 꾸미는 방법에 따라 멤버가 직렬화되지 않도록하는 방법에 따라 다릅니다.

  • 를 사용한 경우 속성 [DataContract]을 제거하십시오 [DataMember].
  • 을 사용한 경우 속성 필드 앞에 [Serializable]추가하십시오 .[NonSerialized]
  • 수업을 꾸미지 않았다면 [IgnoreDataMember]숙소에 추가해야 합니다.

XML Serializing에서는 클래스를 serialize 할 때 [XmlIgnore] 특성 (System.Xml.Serialization.XmlIgnoreAttribute)을 사용하여 속성을 무시할 수 있습니다.

이것은 당신에게 유용 할 수도 있습니다 (또는 XML에서 직렬화 할 때 속성을 무시하는 방법을 찾을 때이 질문을 발견 한 사람에게도 유용 할 수 있습니다).


[NonSerialized ()] 속성으로 필드를 표시하십시오. 이것은 직렬화기에 필드를 무시하도록 지시합니다.

https://msdn.microsoft.com/en-us/library/system.nonserializedattribute(v=vs.110).aspx


당신이 말하는 것은이 위치의 MSDN 라이브러리에서 말하는 것과 충돌합니다.

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractserializer.aspx

언급 한 SP1 기능에 대한 언급이 없습니다.

참고 URL : https://stackoverflow.com/questions/1791946/how-can-i-ignore-a-property-when-serializing-using-the-datacontractserializer

반응형