全部,
我有一个从 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 方法可以正常工作!