diff --git a/ILSpy/TreeNodes/Analyzer/AnalyzedPropertyAccessorsTreeNode.cs b/ILSpy/TreeNodes/Analyzer/AnalyzedPropertyAccessorsTreeNode.cs index 941801dbe..621417d2b 100644 --- a/ILSpy/TreeNodes/Analyzer/AnalyzedPropertyAccessorsTreeNode.cs +++ b/ILSpy/TreeNodes/Analyzer/AnalyzedPropertyAccessorsTreeNode.cs @@ -21,7 +21,7 @@ using Mono.Cecil; namespace ICSharpCode.ILSpy.TreeNodes.Analyzer { - public sealed class AnalyzedPropertyAccessorsTreeNode : AnalyzerTreeNode + internal sealed class AnalyzedPropertyAccessorsTreeNode : AnalyzerTreeNode { public AnalyzedPropertyAccessorsTreeNode(PropertyDefinition analyzedProperty) { diff --git a/ILSpy/TreeNodes/Analyzer/AnalyzedTypeExtensionMethodsTreeNode.cs b/ILSpy/TreeNodes/Analyzer/AnalyzedTypeExtensionMethodsTreeNode.cs index 237131b2f..c88ece234 100644 --- a/ILSpy/TreeNodes/Analyzer/AnalyzedTypeExtensionMethodsTreeNode.cs +++ b/ILSpy/TreeNodes/Analyzer/AnalyzedTypeExtensionMethodsTreeNode.cs @@ -74,20 +74,34 @@ namespace ICSharpCode.ILSpy.TreeNodes.Analyzer private IEnumerable FindReferencesInType(TypeDefinition type) { + if (!HasExtensionAttribute(type)) + yield break; foreach (MethodDefinition method in type.Methods) { - if (method.IsStatic && method.HasCustomAttributes) { - if (method.CustomAttributes.Any(ca => ca.AttributeType.FullName == "System.Runtime.CompilerServices.ExtensionAttribute")) { - if (method.HasParameters && method.Parameters[0].ParameterType.Resolve() == analyzedType) { - yield return new AnalyzedMethodTreeNode(method); - } + if (method.IsStatic && HasExtensionAttribute(method)) { + if (method.HasParameters && method.Parameters[0].ParameterType.Resolve() == analyzedType) { + yield return new AnalyzedMethodTreeNode(method); } } } } + + bool HasExtensionAttribute(ICustomAttributeProvider p) + { + if (p.HasCustomAttributes) { + foreach (CustomAttribute ca in p.CustomAttributes) { + TypeReference t = ca.AttributeType; + if (t.Name == "ExtensionAttribute" && t.Namespace == "System.Runtime.CompilerServices") + return true; + } + } + return false; + } + public static bool CanShow(TypeDefinition type) { - return !(type.IsEnum); + // show on all types except static classes + return !(type.IsAbstract && type.IsSealed); } } } diff --git a/README.txt b/README.txt index 8450b75db..08f8d72f9 100644 --- a/README.txt +++ b/README.txt @@ -13,5 +13,6 @@ Included open-source libraries: ILSpy Contributors: Daniel Grunwald David Srbecky + Ed Harvey Siegfried Pammer Artur ZgodziƄski