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

本文关键字:项目 类型 访问 数组 | 更新日期: 2023-09-27 18:10:15

函数返回一个对象,对象成员包含一个匿名数组;我如何取回个别物品?

函数返回的对象:

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];

所以…如何从返回的结果中获得这些不同的类类型?

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

如果您在运行时"知道"ResultObjectobject[],并且知道其中的项目数量,并且知道它们的类型,则可以将ResultObjectobject转换为object[]后将它们转换为SomeCrazyClassXTypeAnotherCraxyClassYType

:

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

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