Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XmlSerializer未序列化两个枚举属性_C#_Xml_Serialization_Xmlserializer - Fatal编程技术网

C# XmlSerializer未序列化两个枚举属性

C# XmlSerializer未序列化两个枚举属性,c#,xml,serialization,xmlserializer,C#,Xml,Serialization,Xmlserializer,我们目前正在尝试使用XmlSerializer.serialize将一组对象序列化为xml 我们已经使用以下存根测试了XmlSerializer private static void TestMethod() { ChartContentConfig Config = new ChartContentConfig(); Config.DefinitionId = "6790e2ca-be93-48dd-94e7-f8ec0f6e5fd4"; Config.Sorts =

我们目前正在尝试使用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,
}

任何帮助都将不胜感激

谢谢


Matt.

当您使用xsd.exe从XML模式生成类时,对于使用不可为空类型的每个可选属性,将生成相应的布尔“指定”属性,该属性可用于控制该属性是输出还是应忽略


由于没有看到模式,我不能确定,但我希望您的类具有AggregateFunctionSpecified属性和ApplyFilterSpecified属性,这些属性需要设置为true才能输出属性。

如果需要包含其他内容,请让我知道。要了解如何为XML序列化指定类型和成员的属性,我发现使用
xsd.exe
和格式良好的XML模式生成C#类结构最简单。顺便说一句,
[Serializable]
仅适用于二进制序列化。可能相关吗?是否有任何AggregateFunctionSpecified或ApplyFilterSpecified属性?大约半小时前修复了此问题,结果证明这正是答案。非常感谢。把它作为答案贴出来,如果你愿意的话,我会帮你标记的。我已经花了一整天的时间在这个问题上了!非常感谢。多亏了这一点,在我的属性中,它是一个后缀为…的属性,我刚刚将其设置为true,它就工作了。所以这是myPropFieldSpecified=true;
[Serializable]
[GeneratedCode("xsd", "4.0.30319.1")]
public enum ApplyFilter
{
    OnDisplay = 0,
    BeforeGroup = 1,
    AfterGroup = 2,
}