2

我已经派生了一个类,该类将采用 XML 文件并动态生成 ExpandoObject,以利用 ExpandoObjects 列表和递归传递的 XML。

将其传回以进行处理以检索数据是可行的,但是我从遗留系统中检索的 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

看起来您可能已经在 J​​on 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 回答