2014-01-16 19 views
2

У меня есть DataContract, который будет использоваться в контракте на обслуживание, например.Могу ли я ссылаться на DataContract как DataMember на себя

[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 
+0

Попробуйте и посмотрите. Стоит отметить, что ваш класс SubTask фактически не используется. Почему бы вам просто не создать массив «Задачи»? – Joe

ответ

0

Вы должны иметь возможность использовать рекурсивные ссылки DataContract в WCF.

Возможно, вам потребуется добавить «IsReference = true» в атрибут DataContract, чтобы DataContractSerializer правильно обрабатывал рекурсивный характер.

[DataContract(IsReference = true)] 

Следующие ссылки обсудить DataContracts с рекурсивными членами:

Смежные вопросы