c# - 确定 ExpandoObject 中的对象类型

标签 c# .net xml expandoobject

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

因此,对于关键的“被保险人”,我要么得到 ExpandoObjectList<ExpandoObject> 。我正在尝试确定最简单的解决方案来确定返回的类型。

理想情况下就像 x.insured.OfType<List<ExpandoObject>>()返回一个 bool 或类似的东西。

干杯

最佳答案

看起来您可能已经在 J​​on Skeet 的帮助下解决了这个问题,但如果您想知道,您可以使用 is 运算符来解决此问题:

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

关于c# - 确定 ExpandoObject 中的对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10179641/

相关文章:

c# - 当命名空间不再可用时解析 xml 文档

xml - 无法在 RSS 源中显示法语字符而不出现编码错误

c# - 为 .NET Framework 接口(interface)实现接口(interface)隔离原则

c# - Entity Framework 上下文验证

c# - 如何使用属性的依赖注入(inject)?

c++ - 使用 Xerces-C++ 解析递归 XML 模式 (XSD) 时出现段错误

c# - 分割用户名和密码凭证

C# 将枚举转换为字符

C# 我可以使用部分类来使代码更具可读性吗

c# - 用于构建应用程序的 "Main Form"想法的其他替代方案