public EntityItem(IUnresolvedTypeDefinition typeDef, ICompilation compilation) { this.IsInSamePart = true; this.entity = typeDef; var resolvedDefinition = typeDef.Resolve(new SimpleTypeResolveContext(compilation.MainAssembly)).GetDefinition(); if (resolvedDefinition != null) { var ambience = compilation.GetAmbience(); ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList | ConversionFlags.ShowDeclaringType; this.text = ambience.ConvertSymbol(resolvedDefinition); } else { this.text = typeDef.Name; } this.image = CompletionImage.GetImage(typeDef); }
void classComboBoxSelectionChanged(object sender, SelectionChangedEventArgs e) { // The selected class was changed. // Update the list of member items to be the list of members of the current class. EntityItem item = classComboBox.SelectedItem as EntityItem; IUnresolvedTypeDefinition selectedClass = item != null ? item.Entity as IUnresolvedTypeDefinition : null; memberItems = new List <EntityItem>(); if (selectedClass != null) { ICompilation compilation = SD.ParserService.GetCompilationForFile(FileName.Create(selectedClass.UnresolvedFile.FileName)); var context = new SimpleTypeResolveContext(compilation.MainAssembly); ITypeDefinition compoundClass = selectedClass.Resolve(context).GetDefinition(); if (compoundClass != null) { var ambience = compilation.GetAmbience(); foreach (var member in compoundClass.Members) { if (member.IsSynthetic) { continue; } bool isInSamePart = string.Equals(member.Region.FileName, selectedClass.Region.FileName, StringComparison.OrdinalIgnoreCase); memberItems.Add(new EntityItem(member, ambience) { IsInSamePart = isInSamePart }); } memberItems.Sort(); if (jumpOnSelectionChange) { SD.AnalyticsMonitor.TrackFeature(GetType(), "JumpToClass"); JumpTo(item, selectedClass.Region); } } } membersComboBox.ItemsSource = memberItems; }