Browse Source

Add second suggestion of #841: Searching for a metadata token

pull/1072/merge
Siegfried Pammer 7 years ago
parent
commit
115b32665b
  1. 9
      ILSpy/SearchPane.cs
  2. 19
      ILSpy/SearchStrategies.cs

9
ILSpy/SearchPane.cs

@ -61,6 +61,7 @@ namespace ICSharpCode.ILSpy @@ -61,6 +61,7 @@ namespace ICSharpCode.ILSpy
searchModeComboBox.Items.Add(new { Image = Images.Property, Name = "Property" });
searchModeComboBox.Items.Add(new { Image = Images.Event, Name = "Event" });
searchModeComboBox.Items.Add(new { Image = Images.Literal, Name = "Constant" });
searchModeComboBox.Items.Add(new { Image = Images.Library, Name = "Metadata Token" });
searchModeComboBox.SelectedIndex = (int)MainWindow.Instance.SessionSettings.SelectedSearchMode;
searchModeComboBox.SelectionChanged += (sender, e) => MainWindow.Instance.SessionSettings.SelectedSearchMode = (SearchMode)searchModeComboBox.SelectedIndex;
ContextMenuProvider.Add(listBox);
@ -297,6 +298,9 @@ namespace ICSharpCode.ILSpy @@ -297,6 +298,9 @@ namespace ICSharpCode.ILSpy
if (terms[0].StartsWith("c:", StringComparison.Ordinal))
return new LiteralSearchStrategy(terms[0].Substring(2));
if (terms[0].StartsWith("@", StringComparison.Ordinal))
return new MetadataTokenSearchStrategy(terms[0].Substring(1));
}
switch (mode)
@ -317,6 +321,8 @@ namespace ICSharpCode.ILSpy @@ -317,6 +321,8 @@ namespace ICSharpCode.ILSpy
return new MemberSearchStrategy(terms, MemberSearchKind.Property);
case SearchMode.Event:
return new MemberSearchStrategy(terms, MemberSearchKind.Event);
case SearchMode.Token:
return new MetadataTokenSearchStrategy(terms);
}
return null;
@ -377,6 +383,7 @@ namespace ICSharpCode.ILSpy @@ -377,6 +383,7 @@ namespace ICSharpCode.ILSpy
Field,
Property,
Event,
Literal
Literal,
Token
}
}

19
ILSpy/SearchStrategies.cs

@ -1,5 +1,6 @@ @@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text.RegularExpressions;
using System.Windows.Media;
@ -193,6 +194,24 @@ namespace ICSharpCode.ILSpy @@ -193,6 +194,24 @@ namespace ICSharpCode.ILSpy
}
}
class MetadataTokenSearchStrategy : TypeAndMemberSearchStrategy
{
readonly int searchTermToken;
public MetadataTokenSearchStrategy(params string[] terms)
: base(terms)
{
if (searchTerm.Length == 1) {
int.TryParse(searchTerm[0], NumberStyles.HexNumber, CultureInfo.InvariantCulture, out searchTermToken);
}
}
protected override bool MatchName(IMemberDefinition m, Language language)
{
return m.MetadataToken.ToInt32() == searchTermToken;
}
}
class LiteralSearchStrategy : AbstractSearchStrategy
{
readonly TypeCode searchTermLiteralType;

Loading…
Cancel
Save