2

私は、XMLファイルを受け取り、ExpandoObjectsのリストと再帰を利用して渡されるXMLに対してExpandoObjectを動的に生成するクラスを派生させました。

これを返して処理してデータを取得することはできますが、レガシーシステムから取得しているXMLに一貫性がありません。私はそのように単一のノードを取り戻すことができます

<test>
 <insured>
  <a>BLAH BLAH BLAH</a>
  <b>BLAH BLAH BLAH</b>
  <c>BLAH BLAH BLAH</c>
 </insured>
</test>

また

<test>
 <insured>
  <a>BLAH BLAH BLAH</a>
  <b>BLAH BLAH BLAH</b>
  <c>BLAH BLAH BLAH</c>
 </insured>
 <insured>
  <a>BLAH BLAH BLAH</a>
  <b>BLAH BLAH BLAH</b>
  <c>BLAH BLAH BLAH</c>
 </insured>
 <insured>
  <a>BLAH BLAH BLAH</a>
  <b>BLAH BLAH BLAH</b>
  <c>BLAH BLAH BLAH</c>
 </insured>
</test>

したがって、「被保険者」のキーについては、ExpandoObjectまたはを取得していList<ExpandoObject>ます。返されるタイプを判別するための最も簡単なソリューションを判別しようとしています。

理想的にx.insured.OfType<List<ExpandoObject>>()は、ブール値またはその性質の何かを返すようなものです。

乾杯

4

1 に答える 1

3

Jon Skeetの助けを借りてこれを解決したようですが、疑問に思っている場合は、次のis演算子を使用できます。

if(x.insured is List<ExpandoObject>) {
    foreach(dynamic item in x.insured) {
        DoSomething(item);
    }
} else {
    DoSomething(x.insured);
}
于 2012-04-16T19:19:24.460 に答える