Piszę xml z XmlWriter. Mój kod ma wiele odcinków tak:Jak sprawdzić nazwę elementu za pomocą WriteEndElement
xml.WriteStartElement("payload");
ThirdPartyLibrary.Serialise(results, xml);
xml.WriteEndElement(); // </payload>
Problem polega na tym, że metoda jest zawodna ThirdPartyLibrary.Serialise
. Może się zdarzyć (w zależności od zmiennej results
), że nie zamyka wszystkich otwartych znaczników. W konsekwencji moja linia WriteEndElement jest zboczona, zużyta, zamykając wiszące znaczniki biblioteki, zamiast pisać </payload>
.
Tak więc chciałbym wykonać sprawdzone wywołanie funkcji WriteEndElement, która sprawdza nazwę elementu, i zgłasza wyjątek, chyba że kursor znajduje się w oczekiwanym elemencie.
xml.WriteEndElement("payload");
Można myśleć o tym jak XmlReader.ReadStartElement(name)
który rzuca chyba że kursor znajduje się w oczekiwanym miejscu w dokumencie.
Jak mogę to osiągnąć?
Edycja: Drugim przypadkiem użycia dla tej metody rozszerzenia byłoby uczynienie mojego własnego kodu bardziej czytelnym i niezawodnym.
Czy możesz wysłać nowy 'XmlWriter' do' ThirdPartyLibrary.Serialise' i sprawdzić, czy nie jest to proste przed dodaniem go do twojego obiektu 'xml'? – zimdanen
Czy potrafisz jakoś potwierdzić 'wyniki' przed przekazaniem go do' Serialise'? (tzn. czy można przepisać przerwanie serializowanej metody, gdy przechodzisz w określone typy wyników)? – keyboardP
@KeyboardP - trzecia biblioteka jest faktycznie dostarczoną przez użytkownika wtyczką implementującą interfejs, więc nie można jej ufać. –