Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/addins/AspNet/Commands/GoToControllerCommandHandler.cs')
-rw-r--r--main/src/addins/AspNet/Commands/GoToControllerCommandHandler.cs22
1 files changed, 16 insertions, 6 deletions
diff --git a/main/src/addins/AspNet/Commands/GoToControllerCommandHandler.cs b/main/src/addins/AspNet/Commands/GoToControllerCommandHandler.cs
index 67c80ed920..fb944f910e 100644
--- a/main/src/addins/AspNet/Commands/GoToControllerCommandHandler.cs
+++ b/main/src/addins/AspNet/Commands/GoToControllerCommandHandler.cs
@@ -26,15 +26,16 @@
using System;
using System.Linq;
-using ICSharpCode.NRefactory.TypeSystem;
+using ICSharpCode.NRefactory6.CSharp;
+using Microsoft.CodeAnalysis;
+using MonoDevelop.AspNet.Projects;
using MonoDevelop.Components.Commands;
using MonoDevelop.Core;
using MonoDevelop.Ide;
-using MonoDevelop.AspNet.Projects;
+using MonoDevelop.Ide.TypeSystem;
namespace MonoDevelop.AspNet.Commands
{
-
class GoToControllerCommandHandler : CommandHandler
{
protected override void Update (CommandInfo info)
@@ -58,13 +59,22 @@ namespace MonoDevelop.AspNet.Commands
{
var doc = IdeApp.Workbench.ActiveDocument;
var name = doc.FileName.ParentDirectory.FileName;
- var controller = doc.ProjectContent.GetAllTypeDefinitions ().FirstOrDefault (t => t.Name == name + "Controller");
+ var controller = FindController (doc.Project, name);
if (controller != null)
- IdeApp.Workbench.OpenDocument (controller.UnresolvedFile.FileName, doc.Project);
+ IdeApp.ProjectOperations.JumpToDeclaration (controller, doc.Project);
else
MessageService.ShowError ("Matching controller cannot be found.");
}
+
+ INamedTypeSymbol FindController (MonoDevelop.Projects.Project project, string name)
+ {
+ var compilation = TypeSystemService.GetCompilationAsync (project).Result;
+ if (compilation == null)
+ return null;
+
+ return compilation.GetAllTypesInMainAssembly ()
+ .FirstOrDefault (symbol => symbol.Name == name + "Controller");
+ }
}
-
}