Подскажите пожалуйста почему в этом примере не проходит Xml сериализация объекта типа TestClass?
я уже незнаю что с ним делать что-бы это заработало. Помогите пожалуйста!!!
[Serializable]
public class TestClass
{
private string _name = string.Empty;
private int _intValue = int.MinValue;
private object _element = null;
public TestClass()
{
}
public TestClass(string name, int intValue)
{
_name = name;
_intValue = intValue;
int[] list = new int[3];
list[0] = 1;
list[1] = 2;
list[2] = 4;
_element = list;
}
public string Name
{
get
{
return _name;
}
set
{
_name = value;
}
}
public int IntValue
{
get
{
return _intValue;
}
set
{
_intValue = value;
}
}
public object Element
{
get
{
return _element;
}
set
{
_element = value;
}
}
}
public class Program
{
static void Main(string[] args)
{
OurContainerSerializing();
}
private static void OurContainerSerializing()
{
try
{
TestClass obj = new TestClass("test1",1);
XmlSerializer xmlSerializer = new XmlSerializer(typeof(TestClass));
StringWriter sw = new StringWriter();
xmlSerializer.Serialize(sw, obj);
string xml = sw.ToString();
StringReader sr = new StringReader(xml);
TestClass obj1 = (TestClass)xmlSerializer.Deserialize(sr);
int a = 1;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message + "\n" + (null!=ex.InnerException?ex.InnerException.Message:""));
}
}
}
Здравствуйте, ignaci_v, Вы писали:
_>Подскажите пожалуйста почему в этом примере не проходит Xml сериализация объекта типа TestClass?
_>я уже незнаю что с ним делать что-бы это заработало. Помогите пожалуйста!!!
private object _element = null;
поменяй на
private int[] _element;
ну и свойство тоже.
Не помешает добавить :
public TestClass()
{
}

-- Если тебе помогли, незабудь сказать спасибо --
-- Это всё мое личное мнение которое может не совпадать с Вашим или может быть ошибочным --
.NetCoder
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Здравствуйте, dotnetcoder, Вы писали:
D>Не помешает добавить : public TestClass()
D> {
D> }
D>
D>
данное сообщение получено с www.gotdotnet.ru
D>ссылка на оригинальное сообщение
Эсли вы имели ввиду конструктор по умолчанию — так он есть у класса TestClass. Тут дело не в этом
проперти Element. Проперти элемент описано как object а возвращает оно екземпляр масива (int []).
И изза этого вся проблема. Но как сделать так, что-бы он даже в таком случае сериализировался?
Большее спасибо!
Здравствуйте, mormat, Вы писали:
M>Здравствуйте, ignaci_v, Вы писали:
_>>Подскажите пожалуйста почему в этом примере не проходит Xml сериализация объекта типа TestClass?
_>>я уже незнаю что с ним делать что-бы это заработало. Помогите пожалуйста!!!
M>M>private object _element = null;
M>
M>поменяй на
M>M>private int[] _element;
M>
M>ну и свойство тоже.
Дело в том что я немогу сделать следующию замену. Мне нужен на выходе имменно object. Это простой пример, а в реальном случае
мой класс не знает когда и что будет возвращаться свойством Element, поэтому у него и тип object (это может быть как масив,
так и любой другой тип, как сиситемный тпк и пользовательский). Неужели нельзя никак подстроить (возможно как-то с помощью атрибутов) чтобы
такая структура нормально сериализировалась?
Большое спасибо!
Здравствуйте, ignaci_v, Вы писали:
_>Эсли вы имели ввиду конструктор по умолчанию — так он есть у класса TestClass. Тут дело не в этом
_>проперти Element. Проперти элемент описано как object а возвращает оно екземпляр масива (int []).
_>И изза этого вся проблема. Но как сделать так, что-бы он даже в таком случае сериализировался?
_>Большее спасибо!
попробуйте поэкспериментировать с атрибутами [XmlArrayItem] и [XmlArray] на проперти Element. Там можно явно указать тип элементов — может поможет.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, ignaci_v, Вы писали:
_>Подскажите пожалуйста почему в этом примере не проходит Xml сериализация объекта типа TestClass?
_>я уже незнаю что с ним делать что-бы это заработало. Помогите пожалуйста!!!
Skipped...
Вот так будет работать:
[XmlElement("Element", typeof(int[]))]
public object Element
Но лучше конечно типизированное свойство сделать...