访问包含在匿名类型或Object类中的字段

Pav*_*van 1 c# c#-4.0

我有一个返回如下的方法,

return new { a, b, c, d};
Run Code Online (Sandbox Code Playgroud)

方法定义是 public object GetValues(); 如何在调用此方法后访问那些变量a,b,c,d?

Jon*_*eet 7

两种选择:

  • 使用动态类型,只要您在同一个程序集中使用它:

    dynamic values = GetValues();
    var a = values.a; //etc
    
    Run Code Online (Sandbox Code Playgroud)
  • 直接使用反射; 产生的类型将具有公共只读属性叫a,b,cd

另外,如果你能有可能改变方法不使用匿名类型,这样做.(您可能无法根据上下文更改方法的签名,但即使这样,您仍然可以在调用代码中进行转换.)