Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Десериализация и set / 10 сообщений из 10, страница 1 из 1
14.10.2013, 16:14
    #38426849
FullKettle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Десериализация и set
Есть класс, который десериализуется, одно из его полей
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
        [XmlIgnore]
private int id;
public int ID
{
   get
   {
      return id;
   }
   set
   {
      Random rand = new Random((int)(DateTime.Now.Ticks));
      id = rand.Next(0, 1000);
   }
}


Соответственно после десериализации оно "пусто". Как правильно "вызвать сеттер"?
...
Рейтинг: 0 / 0
14.10.2013, 16:43
    #38426918
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Десериализация и set
FullKettle, поясни что ты подразумеваешь под "правильным вызовом сеттера".
...
Рейтинг: 0 / 0
14.10.2013, 17:14
    #38426971
FullKettle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Десериализация и set
bazileFullKettle, поясни что ты подразумеваешь под "правильным вызовом сеттера".
"Заполнение всех полей, кроме ID просходит в процессе сериализации. А как и где "заполнить" поле ID. Можно конечно после сериализации полю экземляра присвоть значение ID, но как рациональнее. Тем более что сериализуется не этот класс, а список экземпляров этого класса
...
Рейтинг: 0 / 0
14.10.2013, 17:15
    #38426973
FullKettle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Десериализация и set
FullKettlebazileFullKettle, поясни что ты подразумеваешь под "правильным вызовом сеттера".
"Заполнение" всех полей, кроме поля ID просходит в процессе сериализации. А как и где "заполнить" поле ID? Можно конечно после сериализации полю ID экземляра присвоть значение, но как рациональнее? Тем более что сериализуется не этот класс, а список экземпляров этого класса
...
Рейтинг: 0 / 0
14.10.2013, 17:42
    #38427023
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Десериализация и set
А почему бы инициализацию не вынести в отдельный метод, например конструктор? Тогда сериализация будет прозрачна.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class Object
{
    public int ID { get; set; }

    public Object()
    {
        ID = new Random((int)(DateTime.Now.Ticks)).Next(0, 1000);
    }
}
...
Рейтинг: 0 / 0
14.10.2013, 18:04
    #38427073
FullKettle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Десериализация и set
МСУА почему бы инициализацию не вынести в отдельный метод, например конструктор? Тогда сериализация будет прозрачна.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class Object
{
    public int ID { get; set; }

    public Object()
    {
        ID = new Random((int)(DateTime.Now.Ticks)).Next(0, 1000);
    }
}


A это потому, что я ступил и не правильно трактовал справку. В справке указано, что сериализуемый класс не должен иметь конструктор с параметрами, а я понял как "не должен иметь конструктора". Ну да, такого быть не может ))) Спасибо.
...
Рейтинг: 0 / 0
14.10.2013, 20:59
    #38427251
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Десериализация и set
FullKettle, я говорил не только про конструктор. Это может быть отдельный метод, который генерирует значение для ID.
...
Рейтинг: 0 / 0
15.10.2013, 07:06
    #38427508
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Десериализация и set
Этот отдельный метод имеет смысл пометить атрибутом OnDeserialized и он вызовется десериализатором
...
Рейтинг: 0 / 0
15.10.2013, 11:44
    #38427856
FullKettle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Десериализация и set
ИзопропилЭтот отдельный метод имеет смысл пометить атрибутом OnDeserialized и он вызовется десериализатором
При этом он не будет пытаться найти "данные" в файле?
...
Рейтинг: 0 / 0
15.10.2013, 13:51
    #38428142
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Десериализация и set
FullKettle,

это не для XML сериализации
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Десериализация и set / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]