本文整理汇总了C#中ICSharpCode.NRefactory.Ast.Expression.CastToIList方法的典型用法代码示例。如果您正苦于以下问题:C# Expression.CastToIList方法的具体用法?C# Expression.CastToIList怎么用?C# Expression.CastToIList使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ICSharpCode.NRefactory.Ast.Expression
的用法示例。
在下文中一共展示了Expression.CastToIList方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: LazyGetItemsOfIList
public static IEnumerable<TreeNode> LazyGetItemsOfIList(TreeNode parent, Expression targetObject)
{
// Add a cast, so that we are sure the expression has an indexer.
// (The expression can be e.g. of type 'object' but its value is a List.
// Without the cast, evaluating "expr[i]" would fail, because object does not have an indexer).
targetObject = targetObject.CastToIList();
int count = 0;
GetValueException error = null;
try {
count = targetObject.GetIListCount();
} 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, null);
} else if (count == 0) {
yield return new TreeNode(null, "(empty)", null, null, null, null);
} else {
for(int i = 0; i < count; i++) {
string imageName;
var image = ExpressionNode.GetImageForArrayIndexer(out imageName);
var itemNode = new ExpressionNode(parent, image, "[" + i + "]", targetObject.AppendIndexer(i));
itemNode.ImageName = imageName;
yield return itemNode;
}
}
}
示例2: LoadNodeCollectionContent
void LoadNodeCollectionContent(AbstractNode node, Expression thisObject, DebugType iListType)
{
thisObject = thisObject.CastToIList();
int listCount = thisObject.GetIListCount();
PropertyInfo indexerProp = iListType.GetProperty("Item");
for (int i = 0; i < listCount; i++) {
Expression itemExpr = thisObject.AppendIndexer(i);
PropertyNode itemNode = new PropertyNode(
new ObjectGraphProperty { Name = "[" + i + "]", MemberInfo = indexerProp, Expression = itemExpr, Value = "", IsAtomic = true, TargetNode = null });
node.AddChild(itemNode);
}
}