C# 从匿名数组访问不同的项类型

C# 从匿名数组访问不同的项类型,c#,anonymous-types,C#,Anonymous Types,函数返回一个对象,其中一个对象成员填充了一个匿名项数组;如何取回单个项目 从函数返回的对象: public class FunctionCallResult { ...blah blah members... public object ResultObject { get; set; } } FunctionCallResult SomeCrazyFunction(string irrelevant_param1, int some_other_irrelevant_param

函数返回一个对象,其中一个对象成员填充了一个匿名项数组;如何取回单个项目

从函数返回的对象:

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);
职能:

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);
函数调用示例:

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
是一个
对象[]
,并且知道其中的项数和它们的类型,从
对象
结果对象
强制转换为
对象[]
后,您可以将它们强制转换为
某个CrazyClassxType
另一个CraxyClassyType

因此:


我必须看更多的代码/你实际上在做什么才能给出更好的建议。

如果他知道顺序(然后知道大小),那么最好创建一个元组。虽然它工作得很好,(谢谢!),但我会建议Tuple@Gusman我同意这会更好——公平地说,问题是,如何取回单个对象?我只是想尽量少修改代码并回答这个问题。匿名类型在这里并不适用。匿名类型类似于
vart=new{A=1,B=2}
在您的示例中,匿名数组中有2个整数。我的示例的成员与int的不同。为什么我的示例不是匿名数组?你叫它什么?我的意思是,在我的班级里,有一个“对象”成员;那么,“新对象[]{…,…}”与“新对象[]{…,…}”有本质区别吗?请注意,我的示例没有
[]
。匿名类型未绑定到名称。*您的数组没有匿名类型。它的类型是Object。可能涉及装箱或引用转换,但数组仍然由命名类型组成。(注意:匿名类型有一个名称,但编译器不会直接告诉您它是什么,您也不能使用它来实例化该类型。)