2009-09-05 17 views
6

Próbuję serializować niektóre obiekty uzyskane z 3rd Party .NET Lib do pliku XML.Jak zignorować [XMLIgnore] Atrybut

Kiedy Go To Definition dla obiektu, niektóre z właściwości tego obiektu są oznaczone jako [XMLIgnore]

jest jakiś sposób, aby powiedzieć mój System.Xml.Serialization.XmlSerializer zignorować fakt, że niektóre właściwości mają tę cechę i że powinna ona szeregować wszystko w obiekcie.

Mógłbym prawdopodobnie uzyskać źródła i skompilować je bez atrybutów XMLIgnore ale byłoby miło, gdyby XmlSerializer miał jakiś ładny obiekt override jak

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

Dzięki z góry


EDIT

Wypróbowałem XmlAttributeOverrides zgodnie z sugestią, ale nie h wiele radości. Oto definicja obiektu (to z FlickrAPI o zdjęcie)

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

} 

I herezje kod serializer pisałem ... nadal nie działa ...

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); 

Odpowiedz

12

zastosowanie:

XmlAttributeOverrides 

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

Edycja: (po EDIT zapytania)

Właściwość musi być publiczna i mieć serializację i seriter do serializacji.

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

((patrz pierwsza uwaga))

+0

Próbowałem to, ale nie radość. Wszelkie inne sugestie będą mile widziane. Dodałem kod do oryginalnego pytania na wypadek, gdy robię coś głupiego. –

+1

LargeUrl nie ma setera, więc nawet bez atrybutu XmlIgnore, nie będzie serializowany. – manji

+1

ah w prawo. Zrobiłem to wokół, tworząc klasę proxy, aby przechowywać wartości, a następnie serializować to osobno. –

Powiązane problemy