6
XMLデータを含む文字列を返す関数を呼び出しています。この関数の動作の仕方は重要ではありませんが、結果のxmlは関数の成功によって異なります。予想される構造のXMLを確認する
基本的に、関数はexpect XMLまたはエラー形式のXMLを返します。私のシステムが設定されている方法は、私ができることである
<ErrorResult>
<ErrorCode>1</ErrorCode>
<ErrorMessage>An Error</ErrorMessage>
</ErrorResult>
:エラー時に
<SpecificResult>
<Something>data</Something>
</SpecificResult>
:下の2つの結果は、成功する
...どのように見えるかの基本的なサンプルです単純な変換関数を使ってxml文字列をクラスに変換しますが、これはmyがクラスの型を知ることを必要とします。成功すれば、私はそれがSpecificResultであることを知り、変換することができます。しかし、エラーが発生したかどうか最初に確認したい。理想的な最終結果はこれと似たようなことが可能になる
...
string xml = GetXML();
if(!IsError(xml))
{
//convert to known type and process
}
そこで問題は、IsError
機能を実装するための最良の方法は何ですか?
"<ErrorResult>"
- チェックオプションのカップルを考えなくてい
GetXml()
方法は本質的に、RETあるためツリーを解析しErrorResultノード
おかげで、これは私には十分な固体に見えます。 msdnがドキュメントではっきりしていないことを確認するために、失敗した 'Parse'の試みはXDocumentを返すでしょう(空ではあるが)? ...また、受け入れられた回答を待って、他の人が入力しているかどうかを確認するのを待ちます;) – musefan
[XDocument.Parse(string)](http://msdn.microsoft.com/en-us/library/system。 xml.linq.xdocument.parse.aspx)は実際には[無効なXMLに遭遇した場合にXmlExceptionをスローする](http://msdn.microsoft.com/en-us/library/bb387040.aspx)を参照してください。しかし、このケースでは本当に例外的な条件のように思えるので、 'IsError(string)'メソッドでそれを処理するのではなく、例外がコールチェーン内でさらに伝播するようにすることができます。 –