Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
Cazzper
1

XAML сериализация и наследование

24.06.2009, 20:15. Показов 4306. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем респект.

Есть такая небольшая проблема с наследованием объектов и сериализацией.
Вот пример исходного кода:
Есть некоторый объект из контейнера
C#
1
2
3
4
    public class Page
    {
        public int Number { get; set; }
    }
Далее есть объект - контейнер:
C#
1
2
3
4
5
6
7
8
9
    [Serializable]
    public class PageList : List<Page>
    {
        new public void Add(Page page)
        {
            base.Add(page);
            Console.WriteLine("Page added");
        }
    }
Как нетрудно догадаться, наша задача в наследовании заключается в выводе в консоль некоего сообщения.
Далее есть базовый объект, содержащий контейнер.
C#
1
2
3
4
5
6
7
8
9
10
11
    [Serializable]
    [ContentProperty("Pages")]
    public class Book 
    {
        private PageList _Pages = new PageList();
        public PageList Pages
        {
            get { return _Pages; }
            set { _Pages = value; }
        }
   }
И наконец программа, задача которой собственно прочитать некую конструкцию
объектов из XAML-файла:
C#
1
2
3
4
5
6
7
8
9
10
11
   class Program
    {
        static void Main(string[] args)
        {
            string bookFileName = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "XMLFile1.xaml";
            XmlDocument doc = new XmlDocument();
            doc.Load(bookFileName);
            Book MyBook = (Book)XamlReader.Load(new XmlNodeReader(doc));
            Console.WriteLine(MyBook.Pages[0].Number);
       }
    }
Вот XAML-файл:
XML
1
2
3
4
<?xml version="1.0" encoding="utf-8" ?>
<Book xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns="clr-namespace:XAMLtest;assembly=XAMLtest">
  <Page Number="1"></Page>
</Book>
Что мы ожидаем:
запуск программы приведет к тому, что будет создан объект класса Book, в
нем будет создан контейнер Pages, в которую будет добавален всего один объект класса Page. При это при создании объекта класса Page в консоли должна появиться надпись:
Page added
Так вот надпись эта не появляется.
При это если просто напрямую вызвать метод:
C#
1
MyBook.Pages.Add(null);
то надпись появляется.

Даже не пойму где начинать копать, может у специалистов есть какая-нибудь идея?
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.06.2009, 20:15
Ответы с готовыми решениями:

Сериализация xaml wpf пример
Подскажите пожалуйста как сохранить ListBox который создан в XAML а потом из него запустить...

Как осуществляется наследование в XAML
Привет. Вопрос как в хэдлайне. Допустим я создал форму MainForm. Повесил на нее 9000 элементов и...

"Наследование" разметки XAML
Всем доброго времени суток. У меня есть форма PatternWindow, мне необходимо перенести разметку этой...

Передача обьекта xaml в другой обьект xaml
есть главное окно xaml &lt;Window x:Class=&quot;test.MainWindow&quot; ...

2
56 / 55 / 7
Регистрация: 17.03.2009
Сообщений: 112
29.06.2009, 14:55 2
А как вы собираетесь распечатать Эту надпись, которая выводится на печать при входе в метод Add(Page page), к которому вы нигде не обращаетесь? А если книги хранятся в XML файле, то на каждую книгу в нем вам надо вызвать этот метод.
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
30.06.2009, 03:12 3
Метод Add должен автоматически вызываться сериализатором. Возможно, он использует AddRange() ?
0
30.06.2009, 03:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.06.2009, 03:12
Помогаю со студенческими работами здесь

Сериализация и наследование
Добрый день. Немного не могу разобраться с сериализацией при наследовании. При запуске...

Сериализация и наследование
Здравствуйте, вопрос следующий: Есть класс А, наследуемый от Control. Есть множество дочерних от...

Взаимодействие MainWindow.xaml.cs <->App.Xaml.cs
Я попробовал и, безусловно, оценил удобство и простоту использования WPF, поначалу казавшийся мне...

Динамическое добавление XAML в XAML
Перешел с Winows Forms на WPF буквально 6 часов назад если смотреть на Time Line, меня мучает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru