c # serialization xml (ошибка при инициализации значений для объекта класса)

1

Я использую 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" } } } } } } }

Я пытаюсь назначить intialise объект в главной функции следующим образом:

                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 в том же порядке, как я показал вам. Я имею в виду Параметр, затем Separator, а затем Parameter. Но если я делаю intialize свой объект в первой инциализации, такой как Parameter = { new Parameter{..}, new Parameter{..}} то он появляется рядом сразу после, но я хочу <separator>Auto Skewing</separator> между этими два.

Как решить эти две проблемы? Пожалуйста, не стесняйтесь спрашивать меня, если вы все еще не понимаете, что я пытаюсь сделать. Большое спасибо.

EDIT: Я думаю, это можно сделать через XElement, но как управлять кодом, который я до сих пор не могу понять.

Теги:
xmlserializer
serialization
xml-serialization

1 ответ

1
Лучший ответ

1: XmlSerializer не поддерживает этот сценарий. Чтобы построить xml в этом формате, вам следует использовать XElement или XmlDocument вместо XmlSerializer.

2: [XmlText], но "1" делает это спорным

  • 0
    Спасибо за ответ, но почему вопрос 1 заставляет вас спорить?
  • 0
    @ user234839 , потому что получение XmlSerializer сделать одну вещь, когда он не поддерживает другой вообще, не полезно. Если вы переключитесь на XmlDocument или XDocument / XElement , 2 больше не применяется.
Показать ещё 10 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню