给定这样的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; }
}
}
答案 0 :(得分:1)
如果您不想在ComplexObject中公开ChildObjects属性,则必须删除DataMember属性。如果你有另一个需要ChildObjects的用例,那么我建议你有一个单独的ComplextObject,它有它。您不能在运行时打开或关闭它,因为它会违反合同定义。
答案 1 :(得分: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; }
}
}