0

全部,

我有一个从 Web 方法返回的 ProjectBudget 类的实例。

前任:

[WebMethod()]
    public ProjectBudget LoadBudget(int id)
    {
       ProjectBudget  budget = BudgetManager.LoadBudget(id);
        return budget;
    }

ProjectBudget 类包含以下定义:

 public class ProjectBudget
{
    public int Id = -1;
    public long VersionNumber = -1;
    public string QuoteNumber = "";
    public string CurrencyCode = "";
    public ProjectInfo Project;
    public ClientInfo Client;

    public readonly List<InventoryItem> Inventory = new List<InventoryItem>();
    public readonly List<Staff> Staff = new List<Staff>();
    public readonly List<CodeType> Departments = new List<CodeType>();
    public readonly SerializableDictionary<string, string> Tasks = new SerializableDictionary<string, string>();

    public ProjectBudget()
    {
    }

}

您看到的所有公共字段都可以很好地序列化,但 XML 序列化程序完全忽略了 Tasks 字段。由于我们现在都知道字典不能由 XML 序列化器处理,所以我在这里使用可序列化字典(它只是一个实现 IXmlSerializable 的字典),但 XML 序列化器决定完全忽略它,即 XML 输出不包含任何任务和生成的代理类没有这个字段。

我需要弄清楚如何告诉 XML 序列化程序不要省略这个字段。

顺便说一句,有趣的是返回 SerializableDictionary 的 web 方法可以正常工作!

4

1 回答 1

0

与您的问题非常相似的问题似乎已经被问过:Link

根据链接,使用 DataContractSerializer 或尝试显式实现您的 getter(和 setter)。

于 2012-08-14T21:58:16.943 回答