Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XmlSerializer - запись xsi:type 
:(
    Опции темы
PashaPash
Дата 4.2.2009, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Есть простой класс и код, который его сериализует в Xml:
Код

[System.Xml.Serialization.XmlRoot()]
public class SomeClass
{
    public int Property1 { get; set; }
    public string Property2 { get; set; }
}
...
SomeClass objectToSerialize = new SomeClass()
{
    Property1 = 42,
    Property2 = "some string"
};

System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(SomeClass));

StringBuilder buffer = new StringBuilder();
using (var writer = new StringWriter(buffer))
{
    serializer.Serialize(writer, objectToSerialize);
}

Console.WriteLine(buffer.ToString());

На выходе получается примерно следующий XML:
Код

<?xml version="1.0" encoding="utf-16"?>
<SomeClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Property1>42</Property1>
  <Property2>some string</Property2>
</SomeClass>

А хотелось бы увидеть строго определенные типы для каждого поля, примерно вот так:
Код

<?xml version="1.0" encoding="utf-16"?>
<SomeClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Property1 xsi:type="xsd:integer">42</Property1>
  <Property2 xsi:type="xsd:string">some string</Property2>
</SomeClass>

Может быть в сериализаторе есть magic switch? В мсдн сходу не нашел. :(


--------------------
PM MAIL WWW   Вверх
Rififi
Дата 5.2.2009, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 5
Всего: 36



PashaPash, 
в чем Тайный смысл такой жесткой типизации?
ps. использовать object вместо типов?
PM MAIL   Вверх
PashaPash
Дата 5.2.2009, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Rififi, смысл в том, что вещь под названием Sql Server Data Services требует именно жесткой типизации при insert/update - там на стороне сервера нет строгой схемы. Т.е. да, там object-ы с Property Bag-ами.
Я пытаюсь набросать Linq To SDS provider, селекты с where и orderby уже работают - при десериализации XmlSerializer типы понимает. А вот сериализировать для инсерта сейчас приходится через ж - делать обертку, которая генерит XElement-ы с аттрибутами, и уже обертку сериализовать. Идея не моя, и вроде готовый код уже есть, но как-то некрасиво, вдруг есть magic switch.


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0435 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.