0

我正在使用一项我不知道响应的实际结构的服务。因此,我将其作为object

object result = Service.GetStuff();

如果我在调试器中检查它,它看起来像这样:

在此处输入图像描述

我尝试将其转换为dynamic,HashtableArraylist,但没有成功。如何访问对象的属性?类似的 SO 问题对我没有帮助。

无法使用 [] 将索引应用于“对象”类型的表达式

4

2 回答 2

3

如果结果始终是一个数组(或实现的东西IList,如 an ArrayList),您可以将其强制转换为 an IList,这是定义索引运算符的地方:

IList result = Service.GetStuff() as IList;

然后您可以应用索引运算符。如果它不总是一个数组,那么您可以使用反射来确定它是否是一个数组,然后将其转换。

更大的问题是,既然你不知道它们是什么,你打算如何处理这些对象?

于 2013-10-14T20:16:12.270 回答
1

似乎是某种字典尝试将对象转换为IDictionary. 如果这没有帮助,您可以调用result.GetType()来查看实际类型并转换为该类型。

我也认为动态也应该起作用。

dynamic result = Service.GetStuff();
int reconnectDelay = ((dynamic)result[0]).reconnectDelay;
于 2013-10-14T20:17:06.947 回答