Я использую 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, но как управлять кодом, который я до сих пор не могу понять.
1: XmlSerializer
не поддерживает этот сценарий. Чтобы построить xml в этом формате, вам следует использовать XElement
или XmlDocument
вместо XmlSerializer
.
2: [XmlText]
, но "1" делает это спорным
XmlSerializer
сделать одну вещь, когда он не поддерживает другой вообще, не полезно. Если вы переключитесь наXmlDocument
илиXDocument
/XElement
, 2 больше не применяется.