public static IEnumerable <TreeNode> LazyGetItemsOfIList(Expression targetObject) { // This is needed for expanding IEnumerable<T> var type = new SimpleType() { Identifier = typeof(IList).FullName }; type.AddAnnotation(typeof(IList)); targetObject = new CastExpression() { Expression = targetObject.Clone(), Type = type }; int count = 0; GetValueException error = null; try { count = GetIListCount(targetObject); } catch (GetValueException e) { // Cannot yield a value in the body of a catch clause (CS1631) error = e; } if (error != null) { yield return(new TreeNode(null, "(error)", error.Message, null, null)); } else if (count == 0) { yield return(new TreeNode(null, "(empty)", null, null, null)); } else { for (int i = 0; i < count; i++) { string imageName; var image = ExpressionNode.GetImageForArrayIndexer(out imageName); var expression = new ExpressionNode(image, "[" + i + "]", targetObject.AppendIndexer(i)); expression.ImageName = imageName; yield return(expression); } } }
public static IEnumerable <TreeNode> LazyGetItemsOfIList(Expression targetObject) { // This is needed for expanding IEnumerable<T> targetObject = new CastExpression( new TypeReference(typeof(IList).FullName), targetObject, CastType.Cast ); int count = 0; GetValueException error = null; try { count = GetIListCount(targetObject); } catch (GetValueException e) { // Cannot yield a value in the body of a catch clause (CS1631) error = e; } if (error != null) { yield return(new TreeNode(null, "(error)", error.Message, null, null)); } else if (count == 0) { yield return(new TreeNode(null, "(empty)", null, null, null)); } else { for (int i = 0; i < count; i++) { yield return(new ExpressionNode(ExpressionNode.GetImageForArrayIndexer(), "[" + i + "]", targetObject.AppendIndexer(i))); } } }