我有一个要在服务合同中使用的DataContract,例如

[DataContract]
public class Task
{
    [DataMember]
    public int Name;
    [DataMember]
    public string Type;
    [DataMember]
    public string Description;
    [DataMember]
    public SubTask[] SubTasks;
}

[DataContract]
public class SubTask
{
    [DataMember]
    public int Name;
    [DataMember]
    public string Type;
    [DataMember]
    public string Description;
    [DataMember]
    public SubTask[] SubTasks;
}




一个子任务可以有+10个子任务,现在我可以像上面的示例一样将DataContract作为DataMember对其自身进行引用吗?

Task 1
   SubTask 1
       SubSubTask 1
       SubSubTask 2
          SubSubSubTask 1
   SubTask 2

最佳答案

您应该能够在WCF中使用递归DataContract引用。

您可能需要在DataContract属性中添加“ IsReference = true”,以便DataContractSerializer正确处理递归性质。

[DataContract(IsReference = true)]


以下链接与递归成员讨论DataContracts:


http://msdn.microsoft.com/en-us/library/vstudio/hh241056(v=vs.100).aspx
http://stefanoricciardi.com/2009/10/22/making-wcf-serializer-work-with-circular-references/
Recursive object not passed over WCF

关于c# - 我可以引用DataContract作为DataMember本身,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21159903/

10-14 16:03