2010-06-22 4 views
2

의 경우 Nothing 대 나는를 DataContract 모든 것이 괜찮 사용할 때 당신은 WCF 서비스직렬화 데이터 계약 대 전혀 WCF 서비스

[DataContract] 
public class CompositeType 
{ 
    bool boolValue = true; 
    string stringValue = "Hello "; 

    [DataMember] 
    public bool BoolValue 
    { 
     get { return boolValue; } 
     set { boolValue = value; } 
    } 

    [DataMember] 
    public string StringValue 
    { 
     get { return stringValue; } 
     set { stringValue = value; } 
    } 
} 

을 만들 때 나는 주어진 스타터 예를 사용합니다.

Serializable을 사용할 때 실제 변수가 개인용인지 공개용인지는 속성이 아닌 호스트에서 시각화 할 수 있습니다. NonSerialized를 사용하면 변수가 숨겨 지지만 전달되지 않습니다. 나는 그것을 얻었고, 직렬화 할 것이 없기 때문에 속성이 전달되지 않는 이유는 무엇이라고 생각합니까? 그 맞습니까? 예상대로

[Serializable] 
public class CompositeType 
{ 
    [NonSerialized] 
    bool boolValue = true; 
    [NonSerialized] 
    string stringValue = "Hello "; 


    public bool BoolValue 
    { 
     get { return boolValue; } 
     set { boolValue = value; } 
    } 


    public string StringValue 
    { 
     get { return stringValue; } 
     set { stringValue = value; } 
    } 
} 

내가 어떤 속성을 제공하지 않으면

는, 클래스가 반환됩니다, 이것은 이해가 안 돼요?

저는 기존 비즈니스 개체를 가져 와서 WCF를 통해 작업 할 의무가 있습니까? 최선의 선택은 DataContract 특성을 추가하는 대신 이들을 그대로 두는 것입니다. 왜 그런가요?

답변

3

[DataContract] 속성은 선택 사항입니다.

왜 사용 했습니까? 데이터를 직렬화하는 방법과 방법을 제어 할 수 있습니다 (예 : & 제외 할 속성).

없어도 괜찮 으면 좋겠지 만, 데이터를주고받는 방법과 데이터를 더 많이 제어해야한다는 것을 알게 될 것입니다.

+0

대단한 답변입니다! 그러나 Mike, DataContract가 없으면 WCF 서비스 지향적으로 처리하지 않아야합니다. ;) – maxbeaudoin