我有一個基本對象,我通過WCF通過電線發送。它旨在幫助填充數據樹。這裏的基本結構:WCF對象序列化困境
[DataContract]
public class ProjectTreeNode
{
private IList<ProjectTreeNode> _children = new List<ProjectTreeNode>();
[DataMember]
public int ParentCategoryID { get; set; }
[DataMember]
public bool IsProject { get; set; }
[DataMember]
public int ProjectID { get; set; }
[DataMember]
public string Description { get; set; }
[DataMember]
public ProjectTreeNode Parent { get; set; }
[DataMember]
public IList<ProjectTreeNode> Children
{
get { return _children; }
set { _children = value; }
}
public ProjectTreeNode() { }
public ProjectTreeNode(string description, int parentCategoryID, IEnumerable<ProjectDto> projectChildren)
{
Description = description;
ParentCategoryID = parentCategoryID;
foreach (var project in projectChildren)
{
Children.Add(new ProjectTreeNode { Description = project.Description, IsProject = true, ProjectID = project.ProjectID, Parent = this });
}
}
}
不幸的是,任何時候我嘗試和檢索ProjectTreeNode
有孩子,我從WCF得到錯誤(的CommunicationException,但我相信它實際上掩蓋序列化問題)。
所以這工作得很好:
public ProjectTreeNode TestNode()
{
return new ProjectTreeNode("Test Node", -1, new ProjectDto[0]);
}
但這接收在客戶端異常:
public ProjectTreeNode TestNode()
{
return new ProjectTreeNode("Test Node", -1, new[] { new ProjectDto { CategoryCombinationID = 123, Description = "Blah", ProjectID = 10} });
}
我知道構造函數被剝離出來的時候通過線路傳輸,但我很困惑爲什麼一個完整的物體仍然會像這樣炸燬我的臉。
問題編號600000與標籤C#:) – Mixxiphoid
一個聲名鵲起的任何其他:) – Killnine