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);
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. –
LargeUrl nie ma setera, więc nawet bez atrybutu XmlIgnore, nie będzie serializowany. – manji
ah w prawo. Zrobiłem to wokół, tworząc klasę proxy, aby przechowywać wartości, a następnie serializować to osobno. –