c# - 从匿名数组访问不同的项目类型

标签 c# anonymous-types

一个函数返回一个对象,对象成员填充了一个匿名的项目数组;我如何取回个别元素?

从函数返回的对象:

public class FunctionCallResult
{
   ...blah blah members...
    public object ResultObject { get; set; }
}

函数:

FunctionCallResult SomeCrazyFunction(string irrelevant_param1, int some_other_irrelevant_param2)
{
    ... some heavy duty code that raises eyebrows ...
    return new FunctionCallResult{ new object[] { SomeCrazyClassX, AnotherCraxyClassY } };
}

函数调用示例:

var myresult = SomeCrazyFunction( "I am the walrus", 42);

但是现在,我如何取回属于不同类的各个对象?

// can't do this... can't index type of object
SomeCrazyClassXType classX = myresult.ResultObject[0];
AnotherCraxyClassYType classY = myresult.ResultObject[1];

那么...我怎样才能从返回的结果中得到这些不同的类类型呢?

最佳答案

如果您“知道”ResultObject 在运行时是一个 object[] 以及其中的项数并且您知道它们的类型,则可以将它们转换为 SomeCrazyClassXTypeAnotherCraxyClassYType 在将 ResultObjectobject 转换为 object[] 之后。

所以:

var resultObjectAsAnObjectArray = (object[])myresult.ResultObject;
var classX = (SomeCrazyClassXType)(resultObjectAsAnObjectArray[0]);
var classY = (AnotherCraxyClassYType)(resultObjectAsAnObjectArray[1]);

我必须查看更多代码/您实际在做什么才能提供更好的建议。

关于c# - 从匿名数组访问不同的项目类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32282320/

相关文章:

c# - 当查询返回匿名类型时,是否可以在 LINQ 中使用 Take?

c# - 如何使用 LINQ 从多个序列进行投影?

c# - 我如何让这个数据集添加我的新行并正确更新?

c# - 枚举组合的设计模式(方法参数)

c# - 创建匿名类的集合

具有属性的类实例化的 C# 到 VB.NET 语法转换

c# - 使用 WPF 动画淡出任何控件

c# - 在 C# 2.0(Windows 窗体)中使用注册表

c# - 为什么 C# 不允许匿名转换为对象?

c# - "=="运算符的行为不像编译器生成的匿名类型的 Equals() 覆盖