Browse Source

Fix search on ctors and always show full signature in search result. This should help to find the right overload more easily.

pull/1213/head
Siegfried Pammer 7 years ago
parent
commit
79611d5976
  1. 26
      ILSpy/Languages/CSharpLanguage.cs
  2. 25
      ILSpy/Search/AbstractSearchStrategy.cs

26
ILSpy/Languages/CSharpLanguage.cs

@ -605,19 +605,23 @@ namespace ICSharpCode.ILSpy @@ -605,19 +605,23 @@ namespace ICSharpCode.ILSpy
var md = metadata.GetMethodDefinition((MethodDefinitionHandle)handle);
declaringType = md.GetDeclaringType();
string methodName = metadata.GetString(md.Name);
var genericParams = md.GetGenericParameters();
if (genericParams.Count > 0) {
methodName += "<";
int i = 0;
foreach (var h in genericParams) {
if (i > 0)
methodName += ",";
var gp = metadata.GetGenericParameter(h);
methodName += metadata.GetString(gp.Name);
if (methodName == ".ctor" || methodName == ".cctor") {
var td = metadata.GetTypeDefinition(declaringType);
methodName = ReflectionHelper.SplitTypeParameterCountFromReflectionName(metadata.GetString(td.Name));
} else {
var genericParams = md.GetGenericParameters();
if (genericParams.Count > 0) {
methodName += "<";
int i = 0;
foreach (var h in genericParams) {
if (i > 0)
methodName += ",";
var gp = metadata.GetGenericParameter(h);
methodName += metadata.GetString(gp.Name);
}
methodName += ">";
}
methodName += ">";
}
if (fullName)
return ToCSharpString(metadata, declaringType, fullName) + "." + methodName;
return methodName;

25
ILSpy/Search/AbstractSearchStrategy.cs

@ -132,15 +132,22 @@ namespace ICSharpCode.ILSpy.Search @@ -132,15 +132,22 @@ namespace ICSharpCode.ILSpy.Search
return false;
}
protected string GetLanguageSpecificName(IEntity member, bool fullName)
protected string GetLanguageSpecificName(IEntity member)
{
if (member is ITypeDefinition t)
return language.TypeToString(t, includeNamespace: fullName);
if (fullName)
return (member.DeclaringTypeDefinition != null
? language.TypeToString(member.DeclaringTypeDefinition, includeNamespace: fullName) + "." : "")
+ member.Name;
return member.Name;
switch (member) {
case ITypeDefinition t:
return language.TypeToString(t, false);
case IField f:
return language.FieldToString(f, true, false);
case IProperty p:
return language.PropertyToString(p, true, false);
case IMethod m:
return language.MethodToString(m, true, false);
case IEvent e:
return language.EventToString(e, true, false);
default:
throw new NotSupportedException(member?.GetType() + " not supported!");
}
}
protected ImageSource GetIcon(IEntity member)
@ -179,7 +186,7 @@ namespace ICSharpCode.ILSpy.Search @@ -179,7 +186,7 @@ namespace ICSharpCode.ILSpy.Search
Member = item,
Fitness = CalculateFitness(item),
Image = GetIcon(item),
Name = GetLanguageSpecificName(item, fullName: false),
Name = GetLanguageSpecificName(item),
LocationImage = declaringType != null ? TypeTreeNode.GetIcon(declaringType) : Images.Namespace,
Location = declaringType != null ? language.TypeToString(declaringType, includeNamespace: true) : item.Namespace
};

Loading…
Cancel
Save