2013-03-15 94 views
0

給定這樣的WCF接口定義,有沒有辦法從ComplexObject響應值中排除屬性?排除WCF DataContract上的屬性

我想排除ChildObjects屬性。我不想從屬性定義中刪除DataMember屬性,因爲我需要在另一種情況下序列化它。

[ServiceContract] 
public interface IComplexObjectService 
{ 
    [OperationContract] 
    ComplexObject Test(int a); 
} 

ComplexObject的定義是這樣的:

[DataContract(IsReference = true)] 
public class ComplexObject 
{ 
    [DataMember] 
    public long ObjectCode 
    { 
     get { return _ObjectCode; } 
     set { _ObjectCode = value; } 
    } 

    [DataMember] 
    public List<ComplexObject> ChildObjects 
    { 
     get { return _ComplexObject; } 
     set { _ComplexObject = value; } 
    } 
} 
+0

與論壇網站不同,我們不使用「謝謝」或「任何幫助讚賞」,或在[so]上簽名。請參閱「[應該'嗨','謝謝',標語和致敬從帖子中刪除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -removed-from-posts)。 – 2013-03-15 02:07:16

回答

1

你將需要刪除的數據成員屬性,如果你不希望暴露在你的ComplexObject的ChildObjects財產。如果你有另一個需要ChildObjects的用例,那麼我建議你有一個獨立的ComplextObject。您不能在運行時將其打開或關閉,因爲它違反了合同定義。

+0

好的,這很有道理,謝謝。 – 2013-03-15 03:36:21

0
[DataContract(IsReference = true)] 
public class ComplexObject 
{ 
public ComplexObject() 
{ 
ChildObjects=null; 
} 
[DataMember] 
public long ObjectCode 
{ 
    get { return _ObjectCode; } 
    set { _ObjectCode = value; } 
} 

[DataMember] 
public List<ComplexObject> ChildObjects 
{ 
    get { return _ComplexObject; } 
    set { _ComplexObject = value; } 
} 
}