c#序列化XML(初始化值到类对象时出错)

本文关键字:对象 出错 序列化 XML 初始化 | 更新日期: 2023-09-27 18:04:20

我正在使用Silverlight

我有一个错误在初始化对象是:

Error   1   Duplicate initialization of member 'Parameter'  C:'Users'SHEK'Documents'Visual Studio 2012'Projects'SliderLastTry'SliderLastTry'ControlClass.cs 24  17  SliderLastTry

,它对应于Parameter的第二次初始化:

Parameter = { new Parameter { Name = "Name2", Label = "Label2", Unit = "Uint2", Component = { new Component { Type = "Type2", Attributes = { new Attributes { Type = "Slider", Displayed = "52", Selected = "05", Items = { "20", "21", "22", "23", "24" } } } } } } }

我试图在Main函数中分配初始化对象,像这样:

                Parameter = { new Parameter { Name = "Name1", Label = "Label1", Unit = "Uint1", Component = { new Component { Type = "Type1", Attributes = { new Attributes { Type = "Combo", Displayed = "42", Selected = "02", Items = { "10", "11", "12", "13", "14" } } } } } } }
            ,
                Separator = { new Separator { Separators = "AutoSkew1" } }
                ,
                Parameter = { new Parameter { Name = "Name2", Label = "Label2", Unit = "Uint2", Component = { new Component { Type = "Type2", Attributes = { new Attributes { Type = "Slider", Displayed = "52", Selected = "05", Items = { "20", "21", "22", "23", "24" } } } } } } }

         var memory = new MemoryStream();
         var serial = new XmlSerializer(objectToSerialize.GetType());
         serial.Serialize(memory, objectToSerialize);  
        var utf8 = new UTF8Encoding();
        return utf8.GetString(memory.GetBuffer(), 0, (int)memory.Length);

我知道原因为什么我有这个错误。但是,即使在意识到这一点之后,仍然这样做的原因是:

(1)我必须以我向您展示的相同顺序显示xml。我的意思是参数,然后是分隔符,然后是参数。但是如果我在第一次初始化中初始化了对象比如Parameter = { new Parameter{..} , new Parameter{..}}那么它就会在后面显示但是我想让<separator>Auto Skewing</separator>在这两者之间

如何解决这两个问题请不要犹豫问我更多,如果你仍然不明白我在努力做什么。非常感谢。

编辑:我想它可以通过XElement完成,但如何管理代码,我仍然无法理解。

c#序列化XML(初始化值到类对象时出错)

1: XmlSerializer不支持该场景。要以这种格式构造xml,应该考虑使用XElementXmlDocument而不是XmlSerializer

2: [XmlText],但"1"使此无意义