从匿名数组访问不同的项目类型
access different item types from anonymous array
一个函数returns一个对象,对象成员填充了一个匿名项目数组;我如何取回个别物品?
从函数返回的对象:
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);
但是现在,如何取回 class 不同的各个对象?
// can't do this... can't index type of object
SomeCrazyClassXType classX = myresult.ResultObject[0];
AnotherCraxyClassYType classY = myresult.ResultObject[1];
那么...我怎样才能从返回的结果中得到这些不同的 class 类型?
如果你 "know" ResultObject
在运行时是一个 object[]
并且其中的项目数量你知道它们的类型,你可以将它们转换为 SomeCrazyClassXType
并且AnotherCraxyClassYType
在将 ResultObject
从 object
转换为 object[]
之后。
所以:
var resultObjectAsAnObjectArray = (object[])myresult.ResultObject;
var classX = (SomeCrazyClassXType)(resultObjectAsAnObjectArray[0]);
var classY = (AnotherCraxyClassYType)(resultObjectAsAnObjectArray[1]);
我必须看到更多 code/what 你实际上在做什么才能给出更好的推荐。
一个函数returns一个对象,对象成员填充了一个匿名项目数组;我如何取回个别物品?
从函数返回的对象:
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);
但是现在,如何取回 class 不同的各个对象?
// can't do this... can't index type of object
SomeCrazyClassXType classX = myresult.ResultObject[0];
AnotherCraxyClassYType classY = myresult.ResultObject[1];
那么...我怎样才能从返回的结果中得到这些不同的 class 类型?
如果你 "know" ResultObject
在运行时是一个 object[]
并且其中的项目数量你知道它们的类型,你可以将它们转换为 SomeCrazyClassXType
并且AnotherCraxyClassYType
在将 ResultObject
从 object
转换为 object[]
之后。
所以:
var resultObjectAsAnObjectArray = (object[])myresult.ResultObject;
var classX = (SomeCrazyClassXType)(resultObjectAsAnObjectArray[0]);
var classY = (AnotherCraxyClassYType)(resultObjectAsAnObjectArray[1]);
我必须看到更多 code/what 你实际上在做什么才能给出更好的推荐。