다음 클래스가 있습니다 (단순화).ServiceStack.Text : DataMember 특성으로 장식되지 않은 속성의 serialization을 강제로 수행합니다.
[DataContract]
public class ServiceResponse
{
public int Sequence { get; set; }
[DataMember]
public ServiceResponseStatus Status { get; set; }
}
내가 로깅 목적으로 객체를 직렬화 ServiceStack을 사용하고 DataContractSerializer
가 나머지를시키는거야. 예상대로 ServiceStack은 DataMember
특성으로 장식되어 있지 않으므로 Sequence
을 serialize하지 않습니다.
강제로 ServiceStack에서이 속성을 serialize 할 수 있습니까?
Marc Gravell이 비슷한 질문에 대한 대답 DataContract Serialization without DataMember Attribute은 다른 접근 방식을 제안하는 것으로 보이지만 나는 물어볼 것이라고 생각했습니다.
다음과 같은 사항이 있습니다 : 'Sequence'를 포함하여 서비스에서 로깅 목적으로 모든 속성을 직렬화하고 싶습니다. 그러나 API에서 누설 된 속성을 원하지 않습니다 (클라이언트는 그것에 대해 알 필요가 없습니다). 왜 그것은'DataMember' 속성으로 꾸며져 있지 않습니다. 조금 더 명확 해 졌나요? – Moss
로깅을 위해 다른 것을 사용하십시오. 마찬가지로'DataMember' 속성은 어떤 속성이 직렬화 될지 선택하는 데 사용됩니다. 즉, ** 의도 된 동작을 ** 어떻게 되돌릴지를 묻는 것입니다. 다른 것을 사용하십시오 - 이보다 더 명확하지 않습니다. – mythz
귀하의 요지를 이해합니다. 나는 내가하려고하는 것이 이상하다고 생각하지만 ServiceStack을 사용하고 좋아했다. 이전에는 수동 직렬화를 없애고 싶었다. – Moss