2011-09-03 4 views
1

내가있는 상황을 이해하는 데 문제 :클래스에서 오는 경우 IsRequired를 설정해야하는 이유는 무엇입니까?

호스트가 Calc (Myclass a)

MyClass 지금 2 곳 (prop1, prop2)

을 포함 예를 들어 operationMethods 이있는 서비스를하고는 고객은 또한 프록시를 통해 MyClass에 대해 알고 있어야하며 참조로 계약을 알아야합니다.

그래서 클라이언트가 MyClass의 새로운 인스턴스를 만들 때 - 어떻게 소품이 누락 될 수 있습니까 ???

새로운 MyClass를 인스턴스화 할 때 - 두 가지 소품 모두 초기화됩니다 (null 또는 무엇인가). 그래서 내가 왜 isRequired가 필요합니까?

답변

1

Theres는 비누 요청을 공식화하는 방법이나 언어에 대해 아무런 보장이 없으므로 생성하는 방식으로 해당 속성이 포함 된 생성 된 클래스를 사용할 수 없습니다. 필요가 데이터 계약 버전에서 설명하고있는 바와 같이 그 애드 팍

와 메시지

상호 작용에 존재하는 필요의 DataMemberAttribute 속성은 애드 팍 속성이 (기본값은 false입니다). 이 속성은 직렬화 된 데이터가 deserialize 될 때 주어진 데이터 멤버가 있어야하는지 여부를 나타냅니다. IsRequired가 true로 설정되면 (값이 있어야 함을 나타냄) EmitDefaultValue가 false로 설정되면 (기본값으로 설정되어 있으면 값이 없어야 함을 나타냄)이 데이터 멤버의 기본값은 다음과 같을 수 없습니다. 그 결과는 모순이 될 것이기 때문에 직렬화된다. 그러한 데이터 멤버가 디폴트 치 (일반적으로 null 또는 0)로 설정되어 직렬화가 시도되면, SerializationException가 Throw됩니다.

+0

그래서 사용자가 null 속성 값으로 MyCLass를 인스턴스화하면 예외가 발생합니까? –

+0

http://msdn.microsoft.com/en-us/library/aa347792.aspx이 페이지의 – kmcc049

+0

정확히는 null 값은 아니지만 수신되는 soap 패킷에 존재하지 않습니다. – kmcc049

관련 문제