Я вызываю функцию, которая возвращает строку, содержащую данные XML. Принцип работы этой функции не важен, но полученный xml может отличаться в зависимости от успеха функции.
По сути, функция будет возвращать ожидаемый XML или XML-файл с ошибкой. Ниже приведены основные примеры того, как могут выглядеть эти два результата ...
В случае успеха:
<SpecificResult>
<Something>data</Something>
</SpecificResult>
При ошибке:
<ErrorResult>
<ErrorCode>1</ErrorCode>
<ErrorMessage>An Error</ErrorMessage>
</ErrorResult>
Способ настройки моей системы заключается в том, что я могу преобразовать строку xml в класс с помощью простой функции конвертера, но для этого необходимо, чтобы я знал тип класса. В случае успеха я буду знать, что это SpecificResult, и я могу конвертировать. Но сначала я хочу проверить, произошла ли ошибка.
Идеальный конечный результат позволил бы нечто подобное этому ...
string xml = GetXML();
if(!IsError(xml))
{
//convert to known type and process
}
Итак, вопрос в том, как лучше всего реализовать функцию IsError
?
Я подумал о паре вариантов, но не уверен, что мне действительно нравится какой-либо из них ...
- проверить, содержит ли строка xml
"<ErrorResult>"
- попытаться преобразовать xml в класс ErrorResult и проверить на сбой
- использовать XDocument или аналогичные встроенные функции для анализа дерева и поиска узла ErrorResult