本文整理汇总了C#中ICSharpCode.NRefactory.CSharp.Refactoring.BaseRefactoringContext.FindReferences方法的典型用法代码示例。如果您正苦于以下问题:C# BaseRefactoringContext.FindReferences方法的具体用法?C# BaseRefactoringContext.FindReferences怎么用?C# BaseRefactoringContext.FindReferences使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ICSharpCode.NRefactory.CSharp.Refactoring.BaseRefactoringContext
的用法示例。
在下文中一共展示了BaseRefactoringContext.FindReferences方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TestOnlyAssigned
protected static bool TestOnlyAssigned(BaseRefactoringContext ctx, AstNode rootNode, IVariable variable)
{
var assignment = false;
var nonAssignment = false;
foreach (var result in ctx.FindReferences(rootNode, variable)) {
var node = result.Node;
if (node is ParameterDeclaration)
continue;
if (node is VariableInitializer) {
if (!(node as VariableInitializer).Initializer.IsNull)
assignment = true;
continue;
}
if (node is IdentifierExpression) {
var parent = node.Parent;
if (parent is AssignmentExpression) {
if (((AssignmentExpression)parent).Left == node) {
assignment = true;
continue;
}
} else if (parent is UnaryOperatorExpression) {
var op = ((UnaryOperatorExpression)parent).Operator;
switch (op) {
case UnaryOperatorType.Increment:
case UnaryOperatorType.PostIncrement:
case UnaryOperatorType.Decrement:
case UnaryOperatorType.PostDecrement:
assignment = true;
if (!(parent.Parent is ExpressionStatement))
nonAssignment = true;
continue;
}
} else if (parent is DirectionExpression) {
if (((DirectionExpression)parent).FieldDirection == FieldDirection.Out) {
assignment = true;
// Using dummy variables is necessary for ignoring
// out-arguments, so we don't want to warn for those.
nonAssignment = true;
continue;
}
}
}
nonAssignment = true;
}
return assignment && !nonAssignment;
}