【发布时间】:2014-01-20 22:17:09
【问题描述】:
我们目前正在尝试使用 XmlSerializer.Serialize 将一组对象序列化为 xml
我们已经使用以下存根测试了 XmlSerializer
private static void TestMethod()
{
ChartContentConfig Config = new ChartContentConfig();
Config.DefinitionId = "6790e2ca-be93-48dd-94e7-f8ec0f6e5fd4";
Config.Sorts = null;
Config.DataFields = new DataField[1];
Config.DataFields[0] = new DataField()
{
Aggregator = AggregateFunction.Sum,
ApplyFilter = ApplyFilter.Before,
FieldName = "Hello",
FieldType = typeof(decimal).ToString(),
FilterToValue = "",
FilterFromValue = "",
FilterOperator = FilterOperator.None,
IsVisible = false,
DisplayName = "Hello",
DefaultStyle = "DefaultFormat"
};
Type configType = typeof(DataField);
DataField DataField = Config.DataFields[0];
DataField.MarkerFormat = "MarkerFormatTest";
DataField.SeriesColour = "SeriesColourTest";
DataField.TestProperty = AggregateFunction.Average;
DataField.Aggregator = AggregateFunction.Average;
string test = SerializeConfig(DataField, configType).InnerXml;
System.Diagnostics.Debug.WriteLine(test);
}
xml 返回正常,但是每个属性都与 Aggregator 和 ApplyFilter 的枚举分开显示。我们现在完全不知道是什么原因造成的,因为一切似乎都很好。以下是两者的定义。
[XmlAttribute]
public AggregateFunction Aggregator { get; set; }
[XmlAttribute]
public ApplyFilter ApplyFilter { get; set; }
带有标签的
[Serializable]
[DebuggerStepThrough]
[DesignerCategory("code")]
[GeneratedCode("xsd", "4.0.30319.1")]
[XmlRoot(Namespace = "", IsNullable = false)]
在该类的顶部。
枚举如下所示:
[Serializable]
[GeneratedCode("xsd", "4.0.30319.1")]
public enum AggregateFunction
{
None = 0,
Group = 1,
Sum = 2,
Max = 3,
Min = 4,
Average = 5,
Count = 6,
Project = 7,
Value = 8,
}
和
[Serializable]
[GeneratedCode("xsd", "4.0.30319.1")]
public enum ApplyFilter
{
OnDisplay = 0,
BeforeGroup = 1,
AfterGroup = 2,
}
任何帮助将不胜感激。
谢谢,
马特。
【问题讨论】:
-
如果还有什么需要我补充的,请告诉我。
-
要了解如何为 XML 序列化属性类型和成员,我发现使用
xsd.exe和格式良好的 XML 模式来生成 C# 类结构是最简单的。 BTW[Serializable]只适用于二进制序列化。 -
this SO question 是否相关?是否有任何 AggregateFunctionSpecified 或 ApplyFilterSpecified 属性?
-
大约半小时前修复了这个问题,事实证明这正是答案。所以非常感谢。将其发布为答案,如果您愿意,我会为您标记?
标签: c# xml serialization xmlserializer