powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Конструктор XmlSerializer не получается вызвать для произвольного объекта
6 сообщений из 6, страница 1 из 1
Конструктор XmlSerializer не получается вызвать для произвольного объекта
    #39786973
AlexV1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу сериализовать произвольный obj1.
Он может быть любого класса, помеченного как [Serializable]

Код: c#
1.
2.
3.
4.
5.
public static bool Func1(object obj1)
{
   ...
  XmlSerializer xmlser = new XmlSerializer(typeof(Person));  // Но указать класс Person - это жестко. Хочется сделать гибче
}


Можно ли как то, например зная имя класса объекта obj1 в переменной

Код: c#
1.
string ClassName = "Person";


вызвать конструктор XmlSerializer, используя эту переменную?

ну или иным способом как то...
...
Рейтинг: 0 / 0
Конструктор XmlSerializer не получается вызвать для произвольного объекта
    #39786994
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexV1,

Код: c#
1.
2.
3.
4.
5.
6.
public static bool Func1(object obj1)
{
  ...
  XmlSerializer xmlser = new XmlSerializer(obj1?.GetType() ?? throw new ArgumentNullException(nameof(obj1)));
  ...
}
...
Рейтинг: 0 / 0
Конструктор XmlSerializer не получается вызвать для произвольного объекта
    #39787000
AlexV1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры Павловны,

спасибо.

Теперь выдало на этой строке вот что

NotSupportedException: Невозможно сериализовать член Common.ConfData.typeRec типа System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[Common.TypeRec, common, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], т. к. он содержит реализацию IDictionary.

что можно сделать с членом Dictionary, чтоб сериализовался?
...
Рейтинг: 0 / 0
Конструктор XmlSerializer не получается вызвать для произвольного объекта
    #39787038
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexV1что можно сделать с членом Dictionary, чтоб сериализовался?
Ничего - у XmlSerializer'а достаточно жесткие требования к начинке класса, и без доп. телодвижений здесь ничего не сделать. Например, вот таких . Возможно, придется сделать часть логики именно для сериализации, а часть контракта класса пометить атрибутом XmlIgnore. Ну, либо наколхозить свою сериализацию в XML - часто ручная потеговая-поатрибутная запись в выходной stream бывает оптимальнее и гибче, чем стандартная xml-сериализация.
...
Рейтинг: 0 / 0
Конструктор XmlSerializer не получается вызвать для произвольного объекта
    #39787040
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я даже больше скажу, для каждого типа, XmlSerializer создает в памяти отдельную сборку\программу и загружает её в память, после чего с помощью этого кода сериализует\десериализует объекты. То есть, сам сериализатор универсальный, но он генерирует очень узко специализированный код для заданного типа
...
Рейтинг: 0 / 0
Конструктор XmlSerializer не получается вызвать для произвольного объекта
    #39787090
AlexV1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы.
С XmlSerializer действительно не все просто.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Конструктор XmlSerializer не получается вызвать для произвольного объекта
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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