Здравствуйте, Аноним, Вы писали:
А>В базе данных имеются строки с XML, каждый XML содержит некий объект, тип которого определяется самим XML-ем. А>Хочется в коде организовать классами все эти XML-и.
А>Предложите, пожалуйста, более аккуратный способ. Мне кажется такой есть.
Паттерн называется фабрика. отдаете ей XML (или объект) а она возвращает вам "конкретную" версию (объект_1/объект_2/объект_3/объект_4)
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, Аноним, Вы писали:
А>В базе данных имеются строки с XML, каждый XML содержит некий объект, тип которого определяется самим XML-ем.
А>Хочется в коде организовать классами все эти XML-и.
А>Предложите, пожалуйста, более аккуратный способ. Мне кажется такой есть.
Почитай про Xml Serialization. Всё делается атрибутами.
С уважением, Анатолий Попов.
ICQ: 995-908
Re[2]: Какой паттерн?
От:
Аноним
Дата:
29.06.10 08:12
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:
AS>Почитай про Xml Serialization. Всё делается атрибутами.
А десериализатор может сам определить тип объекта? Как это сделать?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Aen Sidhe, Вы писали:
AS>>Почитай про Xml Serialization. Всё делается атрибутами.
А>А десериализатор может сам определить тип объекта? Как это сделать?
Может. По имени ноды, по значению атрибута, ещё как-либо. XmlArrayItemAttribute и его аналоги в помощь.
С уважением, Анатолий Попов.
ICQ: 995-908
Re[4]: Какой паттерн?
От:
Аноним
Дата:
29.06.10 08:18
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:
AS>Здравствуйте, Аноним, Вы писали:
А>>Здравствуйте, Aen Sidhe, Вы писали:
AS>>>Почитай про Xml Serialization. Всё делается атрибутами.
А>>А десериализатор может сам определить тип объекта? Как это сделать?
AS>Может. По имени ноды, по значению атрибута, ещё как-либо. XmlArrayItemAttribute и его аналоги в помощь.
И ещё вопрос, сорри, можно ли как-то десериализовать в уже готовый объект. Мой объект на хранит половину данных в реляционном виде, половину в xml. Поэтому я сперва гружу в него реляционные запросом, а потом, при необходимости, хочу подгрузить xml. Прошу прощения.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Aen Sidhe, Вы писали:
AS>>Здравствуйте, Аноним, Вы писали:
А>>>Здравствуйте, Aen Sidhe, Вы писали:
AS>>>>Почитай про Xml Serialization. Всё делается атрибутами.
А>>>А десериализатор может сам определить тип объекта? Как это сделать?
AS>>Может. По имени ноды, по значению атрибута, ещё как-либо. XmlArrayItemAttribute и его аналоги в помощь.
А>И ещё вопрос, сорри, можно ли как-то десериализовать в уже готовый объект. Мой объект на хранит половину данных в реляционном виде, половину в xml. Поэтому я сперва гружу в него реляционные запросом, а потом, при необходимости, хочу подгрузить xml. Прошу прощения.
Здравствуйте, TK, Вы писали:
TK>Паттерн называется фабрика. отдаете ей XML (или объект) а она возвращает вам "конкретную" версию (объект_1/объект_2/объект_3/объект_4)
Это что-то другое, что умеет распознавать и вызывать СООТВЕТСТВУЮЩИЙ метод фабрики.
Есть IОбъект1, IОбъект2, IОбъект3 ...
Фабрика:
interface IСемействоОбъектовСоздатель
{
IОбъект1 CreateОбъект1(данные);
IОбъект2 CreateОбъект2(данные);
IОбъект3 CreateОбъект3(данные);
...
}
// Плюс конкретные реализации этих интерфейсов
Здравствуйте, Аноним, Вы писали:
А>И ещё вопрос, сорри, можно ли как-то десериализовать в уже готовый объект. Мой объект на хранит половину данных в реляционном виде, половину в xml. Поэтому я сперва гружу в него реляционные запросом, а потом, при необходимости, хочу подгрузить xml. Прошу прощения.
Можно взять который "маппер" который сделает "отображение" загруженного XML (зависит насколько у него сложная схема) на свойства существующего объекта.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, BluntBlind, Вы писали:
TK>>Паттерн называется фабрика. отдаете ей XML (или объект) а она возвращает вам "конкретную" версию (объект_1/объект_2/объект_3/объект_4) BB>Это что-то другое, что умеет распознавать и вызывать СООТВЕТСТВУЮЩИЙ метод фабрики. BB>Есть IОбъект1, IОбъект2, IОбъект3 ...
BB>Фабрика: BB>// Плюс конкретные реализации этих интерфейсов