diff --git a/ICSharpCode.Decompiler/Ast/AstBuilder.cs b/ICSharpCode.Decompiler/Ast/AstBuilder.cs index 2d775d770..c161b9e15 100644 --- a/ICSharpCode.Decompiler/Ast/AstBuilder.cs +++ b/ICSharpCode.Decompiler/Ast/AstBuilder.cs @@ -24,6 +24,17 @@ namespace Decompiler this.context = context; } + public static bool MemberIsHidden(MemberReference member) + { + MethodDefinition method = member as MethodDefinition; + if (method != null && (method.IsGetter || method.IsSetter || method.IsAddOn || method.IsRemoveOn)) + return true; + TypeDefinition type = member as TypeDefinition; + if (type != null && type.DeclaringType != null && type.Name.StartsWith("<>c__DisplayClass", StringComparison.Ordinal) && type.IsCompilerGenerated()) + return true; + return false; + } + public void GenerateCode(ITextOutput output) { GenerateCode(output, null); @@ -131,6 +142,8 @@ namespace Decompiler // Nested types foreach(TypeDefinition nestedTypeDef in typeDef.NestedTypes) { + if (MemberIsHidden(nestedTypeDef)) + continue; astType.AddChild(CreateType(nestedTypeDef), TypeDeclaration.MemberRole); } @@ -415,7 +428,7 @@ namespace Decompiler // Add methods foreach(MethodDefinition methodDef in typeDef.Methods) { - if (methodDef.IsSpecialName) continue; + if (methodDef.IsConstructor || MemberIsHidden(methodDef)) continue; astType.AddChild(CreateMethod(methodDef), TypeDeclaration.MemberRole); } diff --git a/ILSpy/CSharpLanguage.cs b/ILSpy/CSharpLanguage.cs index 6bb41c459..4824a00fa 100644 --- a/ILSpy/CSharpLanguage.cs +++ b/ILSpy/CSharpLanguage.cs @@ -167,16 +167,7 @@ namespace ICSharpCode.ILSpy public override bool ShowMember(MemberReference member) { - if (showAllMembers) { - return true; - } - MethodDefinition method = member as MethodDefinition; - if (method != null && (method.IsGetter || method.IsSetter || method.IsAddOn || method.IsRemoveOn)) - return false; - TypeDefinition type = member as TypeDefinition; - if (type != null && type.Name.StartsWith("<>c__DisplayClass", StringComparison.Ordinal) && type.IsCompilerGenerated()) - return false; - return true; + return showAllMembers || !AstBuilder.MemberIsHidden(member); } } }