Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
192 / 147 / 27
Регистрация: 02.05.2011
Сообщений: 467
1

Управление своей сериализацией классом-наследником в приведенном коде

03.04.2012, 16:39. Показов 690. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Есть абстрактный класс (пусть будет myAbstract), который имеет двух классов-наследников (A и B). Поскольку наследники - производные от абстрактного класса - я везде для обращения к экземплярам А и В использую объекты myAbstract - как интерфейс. Необходимо сериализовать все экземпляры А и В, причём с явной реализацией интерфейса ISerializible. Будет ли правильно управлять сериализацией как в коде ниже?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
    [Serializable]
    public abstract class myAbstract : ISerializable
    {
        #region Private Data
 
        private string name;
        private myType type;
        private int address;
 
       #end region
 
       #region Члены ISerializable
        
        public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
        {
 
            throw new NotImplementedException();
        }
 
        #endregion
    }
 
    [Serializable]
    public class A: myAbstract
    {
       #region Override 
 
        public override void GetObjectData(SerializationInfo info, StreamingContext context)
        {
            //конкретное описание хода сохранения данных 
            throw new NotImplementedException();
        }
 
        #endregion
    }
Или правильно сделать управление своей сериализацией только в классах-наследниках?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    [Serializable]
    public abstract class myAbstract
    {
        #region Private Data
 
        private string name;
        private myType type;
        private int address;
 
       #end region
       }
 
    [Serializable]
    public class A: myAbstract, ISerializable
    {
       #region Члены ISerializable
 
        public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
        {
            throw new NotImplementedException();
        }
 
        #endregion
        }
Мне больше нравится второй вариант, но хочу узнать мнения)

Добавлено через 2 минуты
Т.е. сериализовать я буду не объекты типа А и В а объекты myAbstract, которые за счёт полиморфизма сами определят что на самом деле за тип используется и вызовут соответсвующие метод GetObjectData
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.04.2012, 16:39
Ответы с готовыми решениями:

Как работать с TObject классом-наследником
Я не могу найти как правильно создавать свой класс TObject. Может кто подскажет? Есть у...

Как проверить является ли объект базовым классом или наследником
struct Base { int i = -1; }; struct Derived : Base { double d = 0.1; };

Проверить, каким классом наследником помечен элемент общего (наследующего) массива
подскажите как можно, и можно ли проверить, каким классом наследником помечен элемент...

Управление своим классом
Есть у меня свой главный/общий класс Ship. Представляет из себя PictureBox и различные методы...

0
03.04.2012, 16:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2012, 16:39
Помогаю со студенческими работами здесь

Исправить ошибки в приведенном коде
#include <stdio.h> struct list { char name; char sport; char year; char...

Не правильно работает if в приведенном коде
Есть функция которая считает начало слова в строке(a - массив строк, b - массив...

Исправить ошибки в приведенном коде
#include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; int main()...

Исправить ошибку в приведенном коде
#include "ntddk.h" NTSTATUS CompleteIrp( PIRP pIrp, NTSTATUS status, ULONG info) {...


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

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