@@ -124,14 +124,12 @@ public ObjectValue CreateObjectValue (bool withTimeout, EvaluationOptions option
124
124
if ( inner != null && ! ctx . Adapter . IsNull ( ctx , inner . Value ) ) {
125
125
var obj = inner . GetValue ( ctx ) ;
126
126
var objType = ctx . Adapter . GetValueType ( ctx , obj ) ;
127
- var enumerator = ctx . Adapter . RuntimeInvoke ( ctx , objType , obj , "GetEnumerator" , new object [ 0 ] , new object [ 0 ] ) ;
128
- var enumeratorType = ctx . Adapter . GetImplementedInterfaces ( ctx , ctx . Adapter . GetValueType ( ctx , enumerator ) ) . First ( f => ctx . Adapter . GetTypeName ( ctx , f ) == "System.Collections.IEnumerator" ) ;
129
- var childrenList = new List < ObjectValue > ( ) ;
130
- while ( ( bool ) ctx . Adapter . TargetObjectToObject ( ctx , ctx . Adapter . RuntimeInvoke ( ctx , enumeratorType , enumerator , "MoveNext" , new object [ 0 ] , new object [ 0 ] ) ) ) {
131
- var valCurrent = ctx . Adapter . GetMember ( ctx , null , enumeratorType , enumerator , "Current" ) ;
132
- childrenList . Add ( new ExceptionInfoSource ( ctx , valCurrent ) . CreateObjectValue ( withTimeout , ctx . Options ) ) ;
127
+ var count = ( int ) ctx . Adapter . GetMember ( ctx , null , obj , "Count" ) . ObjectValue ;
128
+ var childrenList = new List < ObjectValue > ( ) ;
129
+ for ( int i = 0 ; i < count ; i ++ ) {
130
+ childrenList . Add ( new ExceptionInfoSource ( ctx , ctx . Adapter . GetIndexerReference ( ctx , obj , objType , new object [ ] { ctx . Adapter . CreateValue ( ctx , i ) } ) ) . CreateObjectValue ( withTimeout , ctx . Options ) ) ;
133
131
}
134
- return ObjectValue . CreateObject ( null , new ObjectPath ( "InnerExceptions" ) , "" , "" , ObjectValueFlags . None , childrenList . ToArray ( ) ) ;
132
+ return ObjectValue . CreateObject ( null , new ObjectPath ( "InnerExceptions" ) , "" , "" , ObjectValueFlags . None , childrenList . ToArray ( ) ) ;
135
133
}
136
134
137
135
return ObjectValue . CreateUnknown ( "InnerExceptions" ) ;
0 commit comments