Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.09.2011, 16:43   #1
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию [XmlIgnore] в классах-наследниках

Заметил одну интересную особенность: чтобы переопределённое поле или свойство игнорировалось при сериализации, аттрибут [XmlIgnore] должен присутствовать и в базовом классе, и в наследнике.

Код:
using System.IO;
using System.Xml.Serialization;

class Program
{
	static void Main ()
	{
		Derived obj = new Derived ();
		obj.x = 42;

		using (StreamWriter writer = new StreamWriter ("output.xml"))
		{
			XmlSerializer serializer = new XmlSerializer (typeof (Derived));
			serializer.Serialize (writer, obj);
		}
	}
}


public class Base
{
	[XmlIgnore]	// Этот аттрибут обязателен и в базовом классе, и в наследующем
	public int x;
}


public class Derived: Base
{
	public Derived () { }

	[XmlIgnore]
	public new int x;
}
То же и в virtual/override свойствах. Могут возникнуть проблемы, если поле должно сериализоваться в базовом классе, но не в наследнике.
ds.Dante вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
2 проблемы в классах. Blad47 Помощь студентам 2 11.04.2011 20:57
Ошибка в классах с++ Blad47 Помощь студентам 3 05.04.2011 22:35
проблема в классах jec Общие вопросы C/C++ 3 30.12.2010 11:05
проблема в классах jec Общие вопросы C/C++ 4 29.12.2010 03:39
Перечисления в классах (С++) Александр Елис Помощь студентам 1 22.01.2010 17:10