c#serialising xml(将值初始化为类对象时出错)

时间:2014-05-21 12:58:56

标签: c# xml serialization xml-serialization xmlserializer

我正在使用Silverlight

我在初始化对象时遇到错误:

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

它对应于参数的第二个初始化:

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" } } } } } } }

我试图在主函数中分配初始化对象,如下所示:

                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完成,但是如何管理我仍然无法理解的代码。

1 个答案:

答案 0 :(得分:1)

1:XmlSerializer不支持该方案。要以该格式构建xml,您应该考虑使用XElementXmlDocument而不是XmlSerializer

2:[XmlText],但是“1”使这个没有实际意义