在ExpandoObject中确定对象类型

时间:2012-04-16 18:35:00

标签: c# .net xml expandoobject

我派生了一个类,该类将采用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>

因此,对于关键'保险',我要么获得ExpandoObjectList<ExpandoObject>。我试图确定最简单的解决方案来确定返回的类型。

理想情况下,像x.insured.OfType<List<ExpandoObject>>()这样的东西可以返回一个bool或那种性质的东西。

干杯

1 个答案:

答案 0 :(得分:3)

看起来您可以通过Jon Skeet的帮助解决此问题,但如果您想知道,可以使用is运算符:

if(x.insured is List<ExpandoObject>) {
    foreach(dynamic item in x.insured) {
        DoSomething(item);
    }
} else {
    DoSomething(x.insured);
}