From dd06b9ad79199a23ba4c8fa503ee9bfb842fc98e Mon Sep 17 00:00:00 2001 From: SilverFox Date: Fri, 19 Mar 2021 19:09:46 +0800 Subject: [PATCH] Disallow members of delegate or enum for SearchMSDN --- ILSpy/Commands/SearchMsdnContextMenuEntry.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/ILSpy/Commands/SearchMsdnContextMenuEntry.cs b/ILSpy/Commands/SearchMsdnContextMenuEntry.cs index 919780e39..8094f4dae 100644 --- a/ILSpy/Commands/SearchMsdnContextMenuEntry.cs +++ b/ILSpy/Commands/SearchMsdnContextMenuEntry.cs @@ -56,13 +56,13 @@ namespace ICSharpCode.ILSpy if (node is EventTreeNode eventNode && (!eventNode.IsPublicAPI || !IsAccessible(eventNode.EventDefinition))) return false; - if (node is FieldTreeNode fieldNode && (!fieldNode.IsPublicAPI || !IsAccessible(fieldNode.FieldDefinition))) + if (node is FieldTreeNode fieldNode && (!fieldNode.IsPublicAPI || !IsAccessible(fieldNode.FieldDefinition) || IsDelegateOrEnumMember(fieldNode.FieldDefinition))) return false; if (node is PropertyTreeNode propertyNode && (!propertyNode.IsPublicAPI || !IsAccessible(propertyNode.PropertyDefinition))) return false; - if (node is MethodTreeNode methodNode && (!methodNode.IsPublicAPI || !IsAccessible(methodNode.MethodDefinition))) + if (node is MethodTreeNode methodNode && (!methodNode.IsPublicAPI || !IsAccessible(methodNode.MethodDefinition) || IsDelegateOrEnumMember(methodNode.MethodDefinition))) return false; if (node is NamespaceTreeNode namespaceNode && string.IsNullOrEmpty(namespaceNode.Name)) @@ -87,6 +87,20 @@ namespace ICSharpCode.ILSpy } } + bool IsDelegateOrEnumMember(IMember member) + { + if (member.DeclaringTypeDefinition == null) + return false; + switch (member.DeclaringTypeDefinition.Kind) + { + case TypeKind.Delegate: + case TypeKind.Enum: + return true; + default: + return false; + } + } + public void Execute(TextViewContext context) { if (context.SelectedTreeNodes != null)