diff --git a/ILSpy/CSharpLanguage.cs b/ILSpy/CSharpLanguage.cs index be45afe87..5fdf8ea58 100644 --- a/ILSpy/CSharpLanguage.cs +++ b/ILSpy/CSharpLanguage.cs @@ -110,5 +110,13 @@ namespace ICSharpCode.ILSpy return null; } } + + public override bool ShowMember(MemberReference member) + { + MethodDefinition method = member as MethodDefinition; + if (method != null && (method.IsGetter || method.IsSetter || method.IsAddOn || method.IsRemoveOn)) + return false; + return true; + } } } diff --git a/ILSpy/Language.cs b/ILSpy/Language.cs index d92255edd..fe1b34d85 100644 --- a/ILSpy/Language.cs +++ b/ILSpy/Language.cs @@ -108,6 +108,11 @@ namespace ICSharpCode.ILSpy { return Name; } + + public virtual bool ShowMember(MemberReference member) + { + return true; + } } public static class Languages diff --git a/ILSpy/TreeNodes/EventTreeNode.cs b/ILSpy/TreeNodes/EventTreeNode.cs index 60a9c2b59..b45b7767e 100644 --- a/ILSpy/TreeNodes/EventTreeNode.cs +++ b/ILSpy/TreeNodes/EventTreeNode.cs @@ -34,7 +34,17 @@ namespace ICSharpCode.ILSpy.TreeNodes if (ev == null) throw new ArgumentNullException("ev"); this.ev = ev; - this.LazyLoading = true; + + if (ev.AddMethod != null) + this.Children.Add(new MethodTreeNode(ev.AddMethod)); + if (ev.RemoveMethod != null) + this.Children.Add(new MethodTreeNode(ev.RemoveMethod)); + if (ev.InvokeMethod != null) + this.Children.Add(new MethodTreeNode(ev.InvokeMethod)); + if (ev.HasOtherMethods) { + foreach (var m in ev.OtherMethods) + this.Children.Add(new MethodTreeNode(m)); + } } public EventDefinition EventDefinition { @@ -51,23 +61,9 @@ namespace ICSharpCode.ILSpy.TreeNodes } } - protected override void LoadChildren() - { - if (ev.AddMethod != null) - this.Children.Add(new MethodTreeNode(ev.AddMethod)); - if (ev.RemoveMethod != null) - this.Children.Add(new MethodTreeNode(ev.RemoveMethod)); - if (ev.InvokeMethod != null) - this.Children.Add(new MethodTreeNode(ev.InvokeMethod)); - if (ev.HasOtherMethods) { - foreach (var m in ev.OtherMethods) - this.Children.Add(new MethodTreeNode(m)); - } - } - public override FilterResult Filter(FilterSettings settings) { - if (settings.SearchTermMatches(ev.Name)) + if (settings.SearchTermMatches(ev.Name) && settings.Language.ShowMember(ev)) return FilterResult.Match; else return FilterResult.Hidden; diff --git a/ILSpy/TreeNodes/FieldTreeNode.cs b/ILSpy/TreeNodes/FieldTreeNode.cs index 99db4e7bf..ea7b85136 100644 --- a/ILSpy/TreeNodes/FieldTreeNode.cs +++ b/ILSpy/TreeNodes/FieldTreeNode.cs @@ -55,7 +55,7 @@ namespace ICSharpCode.ILSpy.TreeNodes public override FilterResult Filter(FilterSettings settings) { - if (settings.SearchTermMatches(field.Name)) + if (settings.SearchTermMatches(field.Name) && settings.Language.ShowMember(field)) return FilterResult.Match; else return FilterResult.Hidden; diff --git a/ILSpy/TreeNodes/MethodTreeNode.cs b/ILSpy/TreeNodes/MethodTreeNode.cs index 7409776d1..29243798d 100644 --- a/ILSpy/TreeNodes/MethodTreeNode.cs +++ b/ILSpy/TreeNodes/MethodTreeNode.cs @@ -76,7 +76,7 @@ namespace ICSharpCode.ILSpy.TreeNodes public override FilterResult Filter(FilterSettings settings) { - if (settings.SearchTermMatches(method.Name)) + if (settings.SearchTermMatches(method.Name) && settings.Language.ShowMember(method)) return FilterResult.Match; else return FilterResult.Hidden; diff --git a/ILSpy/TreeNodes/PropertyTreeNode.cs b/ILSpy/TreeNodes/PropertyTreeNode.cs index 792d4cd7c..82f23218e 100644 --- a/ILSpy/TreeNodes/PropertyTreeNode.cs +++ b/ILSpy/TreeNodes/PropertyTreeNode.cs @@ -36,7 +36,15 @@ namespace ICSharpCode.ILSpy.TreeNodes throw new ArgumentNullException("property"); this.property = property; this.isIndexer = isIndexer; - this.LazyLoading = true; + + if (property.GetMethod != null) + this.Children.Add(new MethodTreeNode(property.GetMethod)); + if (property.SetMethod != null) + this.Children.Add(new MethodTreeNode(property.SetMethod)); + if (property.HasOtherMethods) { + foreach (var m in property.OtherMethods) + this.Children.Add(new MethodTreeNode(m)); + } } public PropertyDefinition PropertyDefinition { @@ -53,21 +61,9 @@ namespace ICSharpCode.ILSpy.TreeNodes } } - protected override void LoadChildren() - { - if (property.GetMethod != null) - this.Children.Add(new MethodTreeNode(property.GetMethod)); - if (property.SetMethod != null) - this.Children.Add(new MethodTreeNode(property.SetMethod)); - if (property.HasOtherMethods) { - foreach (var m in property.OtherMethods) - this.Children.Add(new MethodTreeNode(m)); - } - } - public override FilterResult Filter(FilterSettings settings) { - if (settings.SearchTermMatches(property.Name)) + if (settings.SearchTermMatches(property.Name) && settings.Language.ShowMember(property)) return FilterResult.Match; else return FilterResult.Hidden; diff --git a/ILSpy/TreeNodes/TypeTreeNode.cs b/ILSpy/TreeNodes/TypeTreeNode.cs index e0b483907..c30d88e76 100644 --- a/ILSpy/TreeNodes/TypeTreeNode.cs +++ b/ILSpy/TreeNodes/TypeTreeNode.cs @@ -80,10 +80,14 @@ namespace ICSharpCode.ILSpy.TreeNodes { if (!settings.ShowInternalApi && !IsPublicAPI) return FilterResult.Hidden; - if (settings.SearchTermMatches(type.Name)) - return FilterResult.Match; - else + if (settings.SearchTermMatches(type.Name)) { + if (type.IsNested && !settings.Language.ShowMember(type)) + return FilterResult.Hidden; + else + return FilterResult.Match; + } else { return FilterResult.Recurse; + } } protected override void LoadChildren()