Как игнорировать атрибут [XMLIgnore]

Я пытаюсь сериализовать некоторые объекты, полученные из сторонней библиотеки .NET Lib, в файл XML.

Когда я Go To Definition для объекта, некоторые из свойств этого объекта помечаются как [XMLIgnore]

Есть ли способ сказать моему System.Xml.Serialization.XmlSerializer игнорировать тот факт, что некоторые свойства имеют этот атрибут и что он должен сериализовать все в объекте.

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

XmlSerializer xmls = new XmlSerializer(
   typeof(MyObject),
   Settings.DoNotApplyXMLAttributeRules
);

заранее спасибо


ИЗМЕНИТЬ

Попробовали XmlAttributeOverrides, как было предложено, но не получили особой радости. Вот определение объекта (оно взято из FlickrAPI для фотографий)

[Serializable]
public class Photo
{
    //Some code omitted
    [XmlIgnore]
    public string LargeUrl { get; }

}

И вот код сериализатора, который я написал ... все еще не работает ...

XmlWriter xtw = XmlWriter.Create( Server.MapPath("~/App_Data/Data.xml") );

XmlAttributes photoAttributes = new XmlAttributes();
photoAttributes.XmlIgnore = false;

XmlAttributeOverrides photoOverrides = new XmlAttributeOverrides();
photoOverrides.Add(typeof(Photo), "LargeUrl", photoAttributes);

XmlSerializer xmlphoto = new XmlSerializer(typeof(Photo), photoOverrides);

person Eoin Campbell    schedule 05.09.2009    source источник


Ответы (1)


использовать:

XmlAttributeOverrides

http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlattributes.xmlignore.aspx

Изменить: (после вопроса EDIT)

свойство должно быть общедоступным и иметь методы получения и установки для сериализации.

http://msdn.microsoft.com/en-us/library/182eeyhh%28VS.85%29.aspx

((см. первое примечание))

person manji    schedule 05.09.2009
comment
Пробовали это, но без радости. Любые другие предложения будут оценены. Я добавил код к исходному вопросу на случай, если я делаю что-то глупое. - person Eoin Campbell; 05.09.2009
comment
LargeUrl не имеет установщика, поэтому даже без атрибута XmlIgnore он не будет сериализован. - person manji; 05.09.2009
comment
ах, верно. Я обошел это, создав прокси-класс для хранения значений и затем сериализовав его по отдельности. - person Eoin Campbell; 05.09.2009