コード例 #1
0
            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);
            }
コード例 #2
0
        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;
        }