클라이언트 및 서버 v1에서 다음과 같은 데이터 계약을 체결했다고 가정합니다. 내가 DataContract V2의 새로운 버전으로 서버 업데이트 지금wcf DataContracts의 누락 된 멤버에 대한 기본값을 지정하는 방법은 무엇입니까?
[DataContract]
public class Customer
{
[DataMember]
public string Name;
[DataMember]
public string LastName;
}
-this link 당으로 새 멤버의 나이
[DataMember]
public int Age = 25;
추가를 좋아 위의 모습은 25의 경우에 구성원을 기본합니다 클라이언트가 지정하지 않았습니다.
- ClientV1 (이전)은 ServerV2 (신규)를 호출합니다.이 경우 클라이언트는 새 구성원을 전달하지 않습니다. 그러나 데이터 멤버의 값이 0임을 알 수 있습니다. 누락 된 멤버는 기본값 25를 가져야합니다.
이 작업을 수행하려면 another way이 필요합니다. DataMember.EmitDefaultValue = True (기본값)인지 확인하십시오.
[DataMember]
public int Age;
[OnDeserializing]
internal void OnDeserializingMethod(StreamingContext context)
{
Age = 25;
}
제 질문은 필드 이니셜 라이저 방식이 작동하지 않는 이유입니다.