Class from XML

VIT2708
Дата: 07.04.2014 10:10:59
Подскажите как можна создать класс динамически из Xml, с полями и т. д., то есть что бы с ним можна было работать как с обычным обьектом.

У меня приходит много файлов разных форматов и я не хочу каждый раз когда появится новый тип файла писать еще один класс для его обработки, и вот подумал может можна создать список xml шаблонов классов и написать форму для их редактирования, а потом динамически из них строить классы.

На форуме StackOverFlow нашел код

public static T DeserializeObject<T>(string filePath)
   {
       XmlDocument doc = new XmlDocument();
       doc.Load(filePath);
       XmlNodeReader reader = new XmlNodeReader(doc.DocumentElement);
       XmlSerializer ser = new XmlSerializer(typeof(T));
       object obj = ser.Deserialize(reader);

       return (T)obj;
}


Но вот как работать с полями класса "T"?

Если есть другие примеры буду ооочень благодарен за помощь.

Спасибо.
kmaw
Дата: 07.04.2014 10:24:38
VIT2708
Но вот как работать с полями класса "T"?


1. приведение типа
2. рефлексия

"каждый раз когда появится новый тип файла писать еще один класс для его обработки" - самый нормальный подход
Изопропил
Дата: 07.04.2014 10:27:56
3.dynamic
VIT2708
Дата: 07.04.2014 10:32:46
kmaw
VIT2708
Но вот как работать с полями класса "T"?


1. приведение типа
2. рефлексия

"каждый раз когда появится новый тип файла писать еще один класс для его обработки" - самый нормальный подход


Я знаю но это надоедает. И поставщики не хотят соблюдать единый формат.
VIT2708
Дата: 07.04.2014 10:34:10
Изопропил
3.dynamic


Можете привести пример или ссылку (если есть под рукой) так как я никогда не пользовался этим.
VIT2708
Дата: 07.04.2014 10:35:35
[quot kmaw]
VIT2708
Но вот как работать с полями класса "T"?


1. приведение типа
2. рефлексия

1. приведение типа к какому типу приводить, ели я создам класс из xml
Arm79
Дата: 07.04.2014 10:53:06
VIT2708
потом динамически из них строить классы

А у вас есть алгоритм динамической генерации? Если есть, то можно Т4 юзать
VIT2708
Дата: 07.04.2014 10:55:53
Arm79
VIT2708
потом динамически из них строить классы

А у вас есть алгоритм динамической генерации? Если есть, то можно Т4 юзать


Алгоритмов нет, я вообще впервые с таким столкнулся, и вот пытаюсь разобраться.
Arm79
Дата: 07.04.2014 11:00:37
VIT2708,

в общем случае задача нерешаемая. Я не представляю себе, как можно загрузить в программу файл неизвестной структуры и получить подходящее для бизнес-задач описание класса.

есть лучший вариант, исходя из ваших хотелок - возьмите или напишите сами xsd-схему ваших xml-файлов, и по схеме (через xsd.exe к примеру) вы получите нагенерированные классы

Пример: 15042035
VIT2708
Дата: 07.04.2014 11:16:41
Arm79,

Это xml файлы только с разным набором нодов, вот я и хочу создать шаблон xml для их обработки

То есть идея такая:
1. Создать xml шаблон (из него в программе создавать необходимый класс)
2. Создать к этому xml шаблону дополнительный xml_sql где будут хранится параметры для сохранения в базу (для этого я напишу редактор - эту задачу я знаю как решить)

xml_template -> Class (xml_sql -> Class) -> sql database.

Вот хотел так это разрешить, если это правильно.