Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сериализация, класс со списками экземпл. др. классов 
:(
    Опции темы
LeonGrey
  Дата 26.5.2013, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 23.5.2013

Репутация: нет
Всего: нет



Есть класс LengthOnPicture, который хранит расстояние и текст:
Код

[Serializable]
    public class LengthOnPicture
    {
        private double length;        // расстояние
        private string length_text;
        public LengthOnPicture(double Length, string Length_text)
        {
            length = Length;
            length_text = Length_text;
        }
        public double Length
        {
            get { return length; }
        }
 
        public string Length_text
        {
            get { return length_text; }
        }
    }


Есть класс DataPictureClass, который хранит список экземпляров класса LengthOnPicture:

Код

[Serializable]
    public class DataPictureClass
    {
        private List<LengthOnPicture> LOPicture = new List<LengthOnPicture>();
 
        public void AddNewLength(double l, string str)
        {
            LengthOnPicture len = new LengthOnPicture(l, str);
            LOPicture.Add(len);
            LOPicture.ToArray();
        }
}


Как организовать сериализацию экземпляров класса DataPictureClass, содержащего список?

Изначально, когда класс DataPictureClass хранил не экземпляры другого класса, а простые (double и string) поля, я использовала следующий механизм:

Код

public static string SerializeToString(object obj)
        {
            XmlSerializer serializer = new XmlSerializer(obj.GetType());
 
            using (StringWriter writer = new StringWriter())
            {
                serializer.Serialize(writer, obj);
 
                return writer.ToString();
            }
        }
 
        public static T SerializeFromString<T>(string xml)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(T));
 
            using (StringReader reader = new StringReader(xml))
            {
                return (T)serializer.Deserialize(reader);
            }
        }
 


Но ведь теперь при сериализации нужно знать не только о типе DataPictureClass, но и LengthOnPicture...
В общем, я запуталась, подскажите, пожалуйста, как решить такую проблему?
PM MAIL   Вверх
pilotnet
Дата 30.5.2013, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 22.4.2008

Репутация: нет
Всего: нет



я бы так сделал
Код

public class LengthOnPicture
    {
        [XmlAttribute]
        public double length;
        
        [XmlAttribute]
        public string length_text;
        
        public LengthOnPicture()
        {}
        public LengthOnPicture(double Length, string Length_text)
        {
            length = Length;
            length_text = Length_text;
        }
        [XmlIgnore]
        public double Length
        {
            get { return length; }
        
        }
        [XmlIgnore]
        public string Length_text
        {
            get { return length_text; }
        
        }
    }


    public class DataPictureClass
    {
        [XmlArray("ListPictureClass", IsNullable = true)]
        [XmlArrayItem(typeof(LengthOnPicture), ElementName = "LengthOnPicture")]
        public List<LengthOnPicture> LOPicture { set; get; }

        public DataPictureClass()
        {
            LOPicture = new List<LengthOnPicture>();
        }
        public void AddNewLength(double l, string str)
        {

            LOPicture.Add( new LengthOnPicture(l, str) );
        }
    }


Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0652 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.