public override IEnumerable <RelatedSymbolPair> FindRelatedSymbols(IRoslynModelProvider roslynModelProvider, DirectedModelRelationshipType?directedModelRelationshipType = null) { if (directedModelRelationshipType == null || directedModelRelationshipType == DirectedRelationshipTypes.BaseType) { foreach (var baseSymbolRelation in GetBaseTypes(NamedTypeSymbol)) { yield return(baseSymbolRelation); } } if (directedModelRelationshipType == null || directedModelRelationshipType == DirectedRelationshipTypes.Subtype) { foreach (var derivedSymbolRelation in GetDerivedTypes(roslynModelProvider, NamedTypeSymbol)) { yield return(derivedSymbolRelation); } } if (directedModelRelationshipType == null || directedModelRelationshipType == DirectedRelationshipTypes.ImplementedInterface) { foreach (var implementedSymbolRelation in GetImplementedInterfaces(NamedTypeSymbol)) { yield return(implementedSymbolRelation); } } }
protected static IEnumerable <RelatedSymbolPair> GetDerivedInterfaces(IRoslynModelProvider roslynModelProvider, INamedTypeSymbol interfaceSymbol) { var workspace = roslynModelProvider.GetWorkspace(); return(FindDerivedInterfaces(workspace, interfaceSymbol) .Select(i => new RelatedSymbolPair(interfaceSymbol, i, DirectedRelationshipTypes.Subtype))); }
/// <summary> /// Finds and returns related Roslyn symbols. /// </summary> /// <param name="roslynModelProvider">Query API for the Roslyn model.</param> /// <param name="entityRelationType">Optionally specifies what kind of relations should be found. Null means all relations.</param> /// <returns>Related Roslyn symbols.</returns> public override IEnumerable <RoslynSymbolRelation> FindRelatedSymbols(IRoslynModelProvider roslynModelProvider, EntityRelationType?entityRelationType = null) { if (entityRelationType == null || entityRelationType == EntityRelationTypes.BaseType) { foreach (var baseSymbolRelation in GetBaseTypes(RoslynSymbol)) { yield return(baseSymbolRelation); } } if (entityRelationType == null || entityRelationType == EntityRelationTypes.Subtype) { foreach (var derivedSymbolRelation in GetDerivedTypes(roslynModelProvider, RoslynSymbol)) { yield return(derivedSymbolRelation); } } if (entityRelationType == null || entityRelationType == RoslynEntityRelationTypes.ImplementedInterface) { foreach (var implementedSymbolRelation in GetImplementedInterfaces(RoslynSymbol)) { yield return(implementedSymbolRelation); } } }
protected static IEnumerable <RelatedSymbolPair> GetDerivedTypes(IRoslynModelProvider roslynModelProvider, INamedTypeSymbol classSymbol) { var workspace = roslynModelProvider.GetWorkspace(); return(SymbolFinder.FindDerivedClassesAsync(classSymbol, workspace.CurrentSolution).Result .Where(i => classSymbol.SymbolEquals(i.BaseType.OriginalDefinition) && i.TypeKind == TypeKind.Class) .Select(i => new RelatedSymbolPair(classSymbol, i, DirectedRelationshipTypes.Subtype))); }
protected static IEnumerable <RoslynSymbolRelation> GetDerivedInterfaces( IRoslynModelProvider roslynModelProvider, INamedTypeSymbol interfaceSymbol) { var workspace = roslynModelProvider.GetWorkspace(); return(FindDerivedInterfaces(workspace, interfaceSymbol) .Select(i => new RoslynSymbolRelation(interfaceSymbol, i, EntityRelationTypes.Subtype))); }
protected static IEnumerable <RoslynSymbolRelation> GetImplementingTypes( IRoslynModelProvider roslynModelProvider, INamedTypeSymbol interfaceSymbol) { var workspace = roslynModelProvider.GetWorkspace(); return(FindImplementingTypes(workspace, interfaceSymbol) .Select(i => new RoslynSymbolRelation(interfaceSymbol, i, RoslynEntityRelationTypes.ImplementerType))); }
internal RoslynBasedModelBuilder(IRoslynModelProvider roslynModelProvider) { _roslynModelProvider = roslynModelProvider; _model = new RoslynBasedModel(); //var workspace = _roslynModelProvider.GetWorkspace(); //_roslynBasedModelUpdater = new RoslynBasedModelUpdater(_model, workspace); }
/// <summary> /// Creates a new instance. /// </summary> public DiagramToolApplication(IRoslynModelProvider roslynModelProvider, IHostUiServices hostUiServices) { _visualizationService = CreateVisualizationService(roslynModelProvider, hostUiServices); _diagramId = _visualizationService.CreateDiagram(AppDefaults.MinZoom, AppDefaults.MaxZoom, AppDefaults.InitialZoom); RoslynModelService.HideTrivialBaseNodes = AppDefaults.HideTrivialBaseNodes; ApplicationUiService.ImageExportDpi = Dpi.Dpi150; ApplicationUiService.DiagramNodeInvoked += OnShowSourceRequested; ApplicationUiService.ShowModelItemsRequested += OnShowItemsRequestedAsync; }
private static IVisualizationService CreateVisualizationService(IRoslynModelProvider roslynModelProvider, IHostUiServices hostUiServices) { return(new VisualizationService( new RoslynModelServiceFactory(roslynModelProvider), new RoslynDiagramServiceFactory(), new ApplicationUiServiceFactory(hostUiServices, AppDefaults.NodeDescriptionsVisibleByDefault), new ApplicationDiagramPluginFactory(new RoslynLayoutPriorityProvider(), new RoslynDiagramShapeFactory()), new[] { DiagramPluginId.AutoLayoutDiagramPlugin, DiagramPluginId.ModelTrackingDiagramPlugin, DiagramPluginId.ConnectorHandlerDiagramPlugin, ApplicationDiagramPluginId.ModelExtenderDiagramPlugin })); }
public override Task <IEnumerable <RelatedSymbolPair> > FindRelatedSymbolsAsync(IRoslynModelProvider roslynModelProvider, DirectedModelRelationshipType?directedModelRelationshipType = null) { var result = Enumerable.Empty <RelatedSymbolPair>(); if (directedModelRelationshipType == null || directedModelRelationshipType == DirectedRelationshipTypes.ImplementedInterface) { result = result.Concat(GetImplementedInterfaces(NamedTypeSymbol)); } return(Task.FromResult(result)); }
public RoslynModelServiceFactory(IRoslynModelProvider roslynModelProvider) { _roslynModelProvider = roslynModelProvider; }
internal RoslynModelService(IRoslynModelProvider roslynModelProvider) : base(new ModelStore(new RoslynModel()), null) { _roslynModelProvider = roslynModelProvider; }
public virtual IEnumerable <RelatedSymbolPair> FindRelatedSymbols(IRoslynModelProvider roslynModelProvider, DirectedModelRelationshipType?directedModelRelationshipType = null) => Enumerable.Empty <RelatedSymbolPair>();
/// <summary> /// Finds and returns related Roslyn symbols. /// </summary> /// <param name="roslynModelProvider">Query API for the Roslyn model.</param> /// <param name="entityRelationType">Optionally specifies what kind of relations should be found. Null means all relations.</param> /// <returns>Related Roslyn symbols.</returns> public virtual IEnumerable <RoslynSymbolRelation> FindRelatedSymbols(IRoslynModelProvider roslynModelProvider, EntityRelationType?entityRelationType = null) => Enumerable.Empty <RoslynSymbolRelation>();
internal RoslynModelService(IRoslynModelProvider roslynModelProvider) : base(modelRelationshipFactory: null) { _roslynModelProvider = roslynModelProvider; }
public override async Task <IEnumerable <RelatedSymbolPair> > FindRelatedSymbolsAsync(IRoslynModelProvider roslynModelProvider, DirectedModelRelationshipType?directedModelRelationshipType = null) { var result = Enumerable.Empty <RelatedSymbolPair>(); if (directedModelRelationshipType == null || directedModelRelationshipType == DirectedRelationshipTypes.BaseType) { result = result.Concat(GetBaseInterfaces(NamedTypeSymbol)); } if (directedModelRelationshipType == null || directedModelRelationshipType == DirectedRelationshipTypes.Subtype) { result = result.Concat(await GetDerivedInterfacesAsync(roslynModelProvider, NamedTypeSymbol)); } if (directedModelRelationshipType == null || directedModelRelationshipType == DirectedRelationshipTypes.ImplementerType) { result = result.Concat(await GetImplementingTypesAsync(roslynModelProvider, NamedTypeSymbol)); } return(result); }
public virtual Task <IEnumerable <RelatedSymbolPair> > FindRelatedSymbolsAsync( IRoslynModelProvider roslynModelProvider, DirectedModelRelationshipType?directedModelRelationshipType = null) { return(Task.FromResult(Enumerable.Empty <RelatedSymbolPair>())); }
protected static async Task <IEnumerable <RelatedSymbolPair> > GetDerivedInterfacesAsync(IRoslynModelProvider roslynModelProvider, INamedTypeSymbol interfaceSymbol) { var workspace = await roslynModelProvider.GetWorkspaceAsync(); var derivedInterfaces = await FindDerivedInterfacesAsync(workspace, interfaceSymbol); return(derivedInterfaces.Select(i => new RelatedSymbolPair(interfaceSymbol, i, DirectedRelationshipTypes.Subtype))); }