我正在使用的服务我不知道响应的实际结构。因此我将其作为object
:
object result = Service.GetStuff();
如果我在调试器中检查它,它看起来像这样:
我已尝试将其投放到dynamic
,Hashtable
和Arraylist
,但没有成功。如何访问对象的属性?类似的SO问题对我没有帮助。
无法将带有[]的索引应用于“object”类型的表达式
答案 0 :(得分:3)
如果结果总是一个数组(或实现IList
的内容,如ArrayList
),则可以将其转换为IList
,是定义索引运算符的地方:
IList result = Service.GetStuff() as IList;
然后您可以应用索引运算符。如果它不总是一个数组,那么你可以使用反射来确定它是是一个数组,然后再投射它。
更大的问题是,你有什么打算<em>做对象,因为你不知道它们是什么?
答案 1 :(得分:1)
似乎是某种字典尝试将对象转换为IDictionary
。如果这没有帮助,您可以致电result.GetType()
查看实际类型是什么并投射到那个。
我也认为动态也应该有用。
dynamic result = Service.GetStuff();
int reconnectDelay = ((dynamic)result[0]).reconnectDelay;