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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как сериализовать перегруженную проперть? 
:(
    Опции темы
lankin
Дата 22.9.2009, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 377
Регистрация: 13.12.2006

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



есть базовый класс AD
Код

[Serializable][XmlRoot("Ad",Namespace="")]
public partial class Ad 
{
    [XmlElement]
    public virtual string ViewURL
    {get ;set ;}
}


и есть наследованый
Код

[Serializable][XmlRoot("Vacancy")]
public partial class Vacancy : Ad
{

    [XmlElement]
    public override string ViewURL
    { get ; }
}


перегруженная проперть у вакансии не отражается в xml при сериалзации. Что нужно сделать, чтобы сериализовать его?
PM MAIL   Вверх
mihryak
Дата 22.9.2009, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

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



lankin, неплохо было бы прикладывать реальный, пусть и обрезанный, код
Код

    [Serializable]
    [XmlRoot("Ad", Namespace = "")]
    public class Ad
    {
        [XmlElement]
        public virtual string ViewURL { get; set; }
    }

    [Serializable]
    [XmlRoot("Vacancy")]
    public class Vacancy : Ad
    {
        public override string ViewURL
        {
            get { return "overriden"; }
        }
    }

отлично сериализуется обычным XmlSerializer'ом в 
Код

<?xml version="1.0"?>
<Vacancy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ViewURL>overriden</ViewURL>
</Vacancy>

и десериализуется на ура
PM MAIL ICQ   Вверх
lankin
Дата 23.9.2009, 06:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 377
Регистрация: 13.12.2006

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



все правильно, сериализуется. только если у наследованного viewUrl убрать атрибут, а у базового оставить [xmlElement]. Если у наследованного остается [xmlElement] - не сериализуется.
И еще что замечено - если у базового viewUrl убрать SET, то тоже не сериализуется.
PM MAIL   Вверх
mihryak
Дата 23.9.2009, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

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



Цитата(lankin @  23.9.2009,  07:12 Найти цитируемый пост)
если у наследованного viewUrl убрать атрибут, а у базового оставить [xmlElement]. Если у наследованного остается [xmlElement] - не сериализуется.

1. про это в вопросе ни слова не было, как местная популяция должна была догадаться, что в этом проблема?
2. причём проблемы и вовсе нет - пример, приведённый выше, нормально сериализуется и с двумя атрибутами.
может, если действительно есть вопросы, пришло время подробно описать трудности? 

Цитата(lankin @  23.9.2009,  07:12 Найти цитируемый пост)
если у базового viewUrl убрать SET, то тоже не сериализуется. 

это нормальное поведение XmlSerializer'a, он сериализует только публичные гет-сет свойства классов, имеющих пустые конструкторы (это не далеко единственные ограничения, но, пожалуй, самые грабельные при знакомстве с ним)


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

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


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

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


 




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


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

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