0

给定这样的 WCF 接口定义,有没有办法从 ComplexObject 响应值中排除属性?

我想排除 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; }
    }
}
4

2 回答 2

1

如果不想在 ComplexObject 中公开 ChildObjects 属性,则必须删除 DataMember 属性。如果您有另一个需要 ChildObjects 的用例,那么我建议您有一个单独的 ComplextObject 确实有它。您不能只在运行时打开或关闭它,因为它会违反合同定义。

于 2013-03-15T03:34:04.603 回答
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; }
}
}
于 2017-04-08T08:44:51.307 回答