本文整理汇总了C#中MonoDevelop.GetNodeAt方法的典型用法代码示例。如果您正苦于以下问题:C# MonoDevelop.GetNodeAt方法的具体用法?C# MonoDevelop.GetNodeAt怎么用?C# MonoDevelop.GetNodeAt使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MonoDevelop
的用法示例。
在下文中一共展示了MonoDevelop.GetNodeAt方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AnalyzeTargetExpression
bool AnalyzeTargetExpression (RefactoringOptions options, MonoDevelop.CSharp.Ast.CompilationUnit unit)
{
var data = options.GetTextEditorData ();
var target = unit.GetNodeAt (data.Caret.Line, data.Caret.Column);
if (target == null)
return false;
if (target.Parent is MemberReferenceExpression && ((MemberReferenceExpression)target.Parent).GetChildByRole (MemberReferenceExpression.Roles.Identifier) == target) {
var memberReference = (MemberReferenceExpression)target.Parent;
target = memberReference.Target;
var targetResult = options.GetResolver ().Resolve (new ExpressionResult (data.GetTextBetween (target.StartLocation.Line, target.StartLocation.Column, target.EndLocation.Line, target.EndLocation.Column)), resolvePosition);
if (targetResult.StaticResolve)
modifiers = MonoDevelop.Projects.Dom.Modifiers.Static;
declaringType = options.Dom.GetType (targetResult.ResolvedType);
methodName = memberReference.MemberName;
} else if (target is Identifier) {
declaringType = options.ResolveResult.CallingType;
methodName = data.GetTextBetween (target.StartLocation.Line, target.StartLocation.Column, target.EndLocation.Line, target.EndLocation.Column);
}
if (declaringType != null && !HasCompatibleMethod (declaringType, methodName, invocation)) {
if (declaringType.HasParts)
declaringType = declaringType.Parts.FirstOrDefault (t => t.CompilationUnit.FileName == options.Document.FileName) ?? declaringType;
var doc = ProjectDomService.GetParsedDocument (declaringType.SourceProjectDom, declaringType.CompilationUnit.FileName);
declaringType = doc.CompilationUnit.GetTypeAt (declaringType.Location) ?? declaringType;
return true;
}
return false;
}
示例2: GetInvocation
InvocationExpression GetInvocation (MonoDevelop.CSharp.Dom.CompilationUnit unit, TextEditorData data)
{
var containingNode = unit.GetNodeAt (data.Caret.Line, data.Caret.Column);
var curNode = containingNode;
while (curNode != null && !(curNode is InvocationExpression)) {
curNode = curNode.Parent;
}
return curNode as InvocationExpression;
}
示例3: AnalyzeTargetExpression
bool AnalyzeTargetExpression (RefactoringOptions options, MonoDevelop.CSharp.Dom.CompilationUnit unit)
{
var data = options.GetTextEditorData ();
var target = unit.GetNodeAt (data.Caret.Line, data.Caret.Column);
if (target == null)
return false;
if (target.Parent is MemberReferenceExpression && ((MemberReferenceExpression)target.Parent).Identifier == target) {
var memberReference = (MemberReferenceExpression)target.Parent;
target = memberReference.Target;
var targetResult = options.GetResolver ().Resolve (new ExpressionResult (data.GetTextBetween (target.StartLocation.Line, target.StartLocation.Column, target.EndLocation.Line, target.EndLocation.Column)), resolvePosition);
if (targetResult.StaticResolve)
modifiers = MonoDevelop.Projects.Dom.Modifiers.Static;
declaringType = options.Dom.GetType (targetResult.ResolvedType);
methodName = memberReference.Identifier.Name;
} else if (target is Identifier) {
declaringType = options.ResolveResult.CallingType;
methodName = data.GetTextBetween (target.StartLocation.Line, target.StartLocation.Column, target.EndLocation.Line, target.EndLocation.Column);
}
return declaringType != null && !HasCompatibleMethod (declaringType, methodName, invocation);
}
示例4: GetDelegateType
IType GetDelegateType (RefactoringOptions options, MonoDevelop.CSharp.Dom.CompilationUnit unit)
{
var data = options.GetTextEditorData ();
var containingNode = unit.GetNodeAt (data.Caret.Line, data.Caret.Column);
var parent = containingNode.Parent;
while (parent != null) {
if (parent is AssignmentExpression) {
AssignmentExpression assignment = (AssignmentExpression)parent;
if (assignment.AssignmentOperatorType != AssignmentOperatorType.Add && assignment.AssignmentOperatorType != AssignmentOperatorType.Subtract && assignment.AssignmentOperatorType != AssignmentOperatorType.Assign)
return null;
var resolveResult = ResolveAssignment (options, assignment);
if (resolveResult == null)
return null;
IType type = options.Dom.GetType (resolveResult.ResolvedType);
if (type == null || type.ClassType != ClassType.Delegate)
return null;
return type;
}
parent = parent.Parent;
}
return null;
}