Browse Source

Remove duplicate MetadataToken on PropertyTreeNode + more clean-up

pull/863/head
Siegfried Pammer 8 years ago
parent
commit
55a99ed5b0
  1. 5
      ILSpy/TreeNodes/DerivedTypesEntryNode.cs
  2. 37
      ILSpy/TreeNodes/EventTreeNode.cs
  3. 29
      ILSpy/TreeNodes/FieldTreeNode.cs
  4. 36
      ILSpy/TreeNodes/MethodTreeNode.cs
  5. 32
      ILSpy/TreeNodes/PropertyTreeNode.cs
  6. 4
      ILSpy/TreeNodes/SearchMsdnContextMenuEntry.cs
  7. 88
      ILSpy/TreeNodes/TypeTreeNode.cs

5
ILSpy/TreeNodes/DerivedTypesEntryNode.cs

@ -100,9 +100,6 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -100,9 +100,6 @@ namespace ICSharpCode.ILSpy.TreeNodes
language.WriteCommentLine(output, language.TypeToString(type, true));
}
MemberReference IMemberTreeNode.Member
{
get { return type; }
}
MemberReference IMemberTreeNode.Member => type;
}
}

37
ILSpy/TreeNodes/EventTreeNode.cs

@ -28,13 +28,12 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -28,13 +28,12 @@ namespace ICSharpCode.ILSpy.TreeNodes
/// </summary>
public sealed class EventTreeNode : ILSpyTreeNode, IMemberTreeNode
{
readonly EventDefinition ev;
public EventTreeNode(EventDefinition ev)
{
if (ev == null)
throw new ArgumentNullException(nameof(ev));
this.ev = ev;
this.EventDefinition = ev;
if (ev.AddMethod != null)
this.Children.Add(new MethodTreeNode(ev.AddMethod));
@ -47,26 +46,17 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -47,26 +46,17 @@ namespace ICSharpCode.ILSpy.TreeNodes
this.Children.Add(new MethodTreeNode(m));
}
}
public EventDefinition EventDefinition
{
get { return ev; }
}
public override object Text
{
get { return GetText(ev, this.Language) + ev.MetadataToken.ToSuffixString(); }
}
public EventDefinition EventDefinition { get; }
public override object Text => GetText(EventDefinition, this.Language) + EventDefinition.MetadataToken.ToSuffixString();
public static object GetText(EventDefinition eventDef, Language language)
{
return HighlightSearchMatch(eventDef.Name, " : " + language.TypeToString(eventDef.EventType, false, eventDef));
}
public override object Icon
{
get { return GetIcon(ev); }
}
public override object Icon => GetIcon(EventDefinition);
public static ImageSource GetIcon(EventDefinition eventDef)
{
@ -100,7 +90,7 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -100,7 +90,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override FilterResult Filter(FilterSettings settings)
{
if (settings.SearchTermMatches(ev.Name) && settings.Language.ShowMember(ev))
if (settings.SearchTermMatches(EventDefinition.Name) && settings.Language.ShowMember(EventDefinition))
return FilterResult.Match;
else
return FilterResult.Hidden;
@ -108,20 +98,17 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -108,20 +98,17 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override void Decompile(Language language, ITextOutput output, DecompilationOptions options)
{
language.DecompileEvent(ev, output, options);
language.DecompileEvent(EventDefinition, output, options);
}
public override bool IsPublicAPI {
get {
MethodDefinition accessor = ev.AddMethod ?? ev.RemoveMethod;
MethodDefinition accessor = EventDefinition.AddMethod ?? EventDefinition.RemoveMethod;
return accessor != null && (accessor.IsPublic || accessor.IsFamilyOrAssembly || accessor.IsFamily);
}
}
MemberReference IMemberTreeNode.Member
{
get { return ev; }
}
MemberReference IMemberTreeNode.Member => EventDefinition;
}
}

29
ILSpy/TreeNodes/FieldTreeNode.cs

@ -28,34 +28,26 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -28,34 +28,26 @@ namespace ICSharpCode.ILSpy.TreeNodes
/// </summary>
public sealed class FieldTreeNode : ILSpyTreeNode, IMemberTreeNode
{
readonly FieldDefinition field;
public FieldDefinition FieldDefinition
{
get { return field; }
}
public FieldDefinition FieldDefinition { get; }
public FieldTreeNode(FieldDefinition field)
{
if (field == null)
throw new ArgumentNullException(nameof(field));
this.field = field;
this.FieldDefinition = field;
}
public override object Text
{
get {
return HighlightSearchMatch(
field.Name,
" : " + this.Language.TypeToString(field.FieldType, false, field) + field.MetadataToken.ToSuffixString()
FieldDefinition.Name,
" : " + this.Language.TypeToString(FieldDefinition.FieldType, false, FieldDefinition) + FieldDefinition.MetadataToken.ToSuffixString()
);
}
}
public override object Icon
{
get { return GetIcon(field); }
}
public override object Icon => GetIcon(FieldDefinition);
public static ImageSource GetIcon(FieldDefinition field)
{
@ -112,7 +104,7 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -112,7 +104,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override FilterResult Filter(FilterSettings settings)
{
if (settings.SearchTermMatches(field.Name) && settings.Language.ShowMember(field))
if (settings.SearchTermMatches(FieldDefinition.Name) && settings.Language.ShowMember(FieldDefinition))
return FilterResult.Match;
else
return FilterResult.Hidden;
@ -120,18 +112,15 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -120,18 +112,15 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override void Decompile(Language language, ITextOutput output, DecompilationOptions options)
{
language.DecompileField(field, output, options);
language.DecompileField(FieldDefinition, output, options);
}
public override bool IsPublicAPI {
get {
return field.IsPublic || field.IsFamily || field.IsFamilyOrAssembly;
return FieldDefinition.IsPublic || FieldDefinition.IsFamily || FieldDefinition.IsFamilyOrAssembly;
}
}
MemberReference IMemberTreeNode.Member
{
get { return field; }
}
MemberReference IMemberTreeNode.Member => FieldDefinition;
}
}

36
ILSpy/TreeNodes/MethodTreeNode.cs

@ -32,27 +32,16 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -32,27 +32,16 @@ namespace ICSharpCode.ILSpy.TreeNodes
/// </summary>
public sealed class MethodTreeNode : ILSpyTreeNode, IMemberTreeNode
{
readonly MethodDefinition method;
public MethodDefinition MethodDefinition
{
get { return method; }
}
public MethodDefinition MethodDefinition { get; }
public MethodTreeNode(MethodDefinition method)
{
if (method == null)
throw new ArgumentNullException(nameof(method));
this.method = method;
this.MethodDefinition = method;
}
public override object Text
{
get
{
return GetText(method, Language);
}
}
public override object Text => GetText(MethodDefinition, Language) + MethodDefinition.MetadataToken.ToSuffixString();
public static object GetText(MethodDefinition method, Language language)
{
@ -74,14 +63,10 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -74,14 +63,10 @@ namespace ICSharpCode.ILSpy.TreeNodes
b.Append(") : ");
b.Append(language.TypeToString(method.ReturnType, false, method.MethodReturnType));
}
b.Append(method.MetadataToken.ToSuffixString());
return HighlightSearchMatch(language.FormatMethodName(method), b.ToString());
}
public override object Icon
{
get { return GetIcon(method); }
}
public override object Icon => GetIcon(MethodDefinition);
public static ImageSource GetIcon(MethodDefinition method)
{
@ -136,12 +121,12 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -136,12 +121,12 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override void Decompile(Language language, ITextOutput output, DecompilationOptions options)
{
language.DecompileMethod(method, output, options);
language.DecompileMethod(MethodDefinition, output, options);
}
public override FilterResult Filter(FilterSettings settings)
{
if (settings.SearchTermMatches(method.Name) && settings.Language.ShowMember(method))
if (settings.SearchTermMatches(MethodDefinition.Name) && settings.Language.ShowMember(MethodDefinition))
return FilterResult.Match;
else
return FilterResult.Hidden;
@ -149,13 +134,10 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -149,13 +134,10 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override bool IsPublicAPI {
get {
return method.IsPublic || method.IsFamily || method.IsFamilyOrAssembly;
return MethodDefinition.IsPublic || MethodDefinition.IsFamily || MethodDefinition.IsFamilyOrAssembly;
}
}
MemberReference IMemberTreeNode.Member
{
get { return method; }
}
MemberReference IMemberTreeNode.Member => MethodDefinition;
}
}

32
ILSpy/TreeNodes/PropertyTreeNode.cs

@ -28,14 +28,13 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -28,14 +28,13 @@ namespace ICSharpCode.ILSpy.TreeNodes
/// </summary>
public sealed class PropertyTreeNode : ILSpyTreeNode, IMemberTreeNode
{
readonly PropertyDefinition property;
readonly bool isIndexer;
public PropertyTreeNode(PropertyDefinition property)
{
if (property == null)
throw new ArgumentNullException(nameof(property));
this.property = property;
this.PropertyDefinition = property;
using (LoadedAssembly.DisableAssemblyLoad()) {
this.isIndexer = property.IsIndexer();
}
@ -48,17 +47,11 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -48,17 +47,11 @@ namespace ICSharpCode.ILSpy.TreeNodes
foreach (var m in property.OtherMethods)
this.Children.Add(new MethodTreeNode(m));
}
}
public PropertyDefinition PropertyDefinition {
get { return property; }
}
public PropertyDefinition PropertyDefinition { get; }
public override object Text
{
get { return GetText(property, Language, isIndexer) + property.MetadataToken.ToSuffixString(); }
}
public override object Text => GetText(PropertyDefinition, Language, isIndexer) + PropertyDefinition.MetadataToken.ToSuffixString();
public static object GetText(PropertyDefinition property, Language language, bool? isIndexer = null)
{
@ -88,15 +81,11 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -88,15 +81,11 @@ namespace ICSharpCode.ILSpy.TreeNodes
b.Append(" : ");
}
b.Append(language.TypeToString(property.PropertyType, false, property));
b.Append(property.MetadataToken.ToSuffixString());
return HighlightSearchMatch(name, b.ToString());
}
public override object Icon
{
get { return GetIcon(property); }
}
public override object Icon => GetIcon(PropertyDefinition);
public static ImageSource GetIcon(PropertyDefinition property, bool isIndexer = false)
{
@ -169,7 +158,7 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -169,7 +158,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override FilterResult Filter(FilterSettings settings)
{
if (settings.SearchTermMatches(property.Name) && settings.Language.ShowMember(property))
if (settings.SearchTermMatches(PropertyDefinition.Name) && settings.Language.ShowMember(PropertyDefinition))
return FilterResult.Match;
else
return FilterResult.Hidden;
@ -177,12 +166,12 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -177,12 +166,12 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override void Decompile(Language language, ITextOutput output, DecompilationOptions options)
{
language.DecompileProperty(property, output, options);
language.DecompileProperty(PropertyDefinition, output, options);
}
public override bool IsPublicAPI {
get {
switch (GetAttributesOfMostAccessibleMethod(property) & MethodAttributes.MemberAccessMask) {
switch (GetAttributesOfMostAccessibleMethod(PropertyDefinition) & MethodAttributes.MemberAccessMask) {
case MethodAttributes.Public:
case MethodAttributes.Family:
case MethodAttributes.FamORAssem:
@ -193,9 +182,6 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -193,9 +182,6 @@ namespace ICSharpCode.ILSpy.TreeNodes
}
}
MemberReference IMemberTreeNode.Member
{
get { return property; }
}
MemberReference IMemberTreeNode.Member => PropertyDefinition;
}
}

4
ILSpy/TreeNodes/SearchMsdnContextMenuEntry.cs

@ -92,9 +92,7 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -92,9 +92,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
if (namespaceNode != null)
address = string.Format(msdnAddress, namespaceNode.Name);
var memberNode = node as IMemberTreeNode;
if (memberNode != null)
{
if (node is IMemberTreeNode memberNode) {
var member = memberNode.Member;
var memberName = string.Empty;

88
ILSpy/TreeNodes/TypeTreeNode.cs

@ -28,8 +28,6 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -28,8 +28,6 @@ namespace ICSharpCode.ILSpy.TreeNodes
{
public sealed class TypeTreeNode : ILSpyTreeNode, IMemberTreeNode
{
readonly TypeDefinition type;
readonly AssemblyTreeNode parentAssemblyNode;
public TypeTreeNode(TypeDefinition type, AssemblyTreeNode parentAssemblyNode)
{
@ -37,34 +35,24 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -37,34 +35,24 @@ namespace ICSharpCode.ILSpy.TreeNodes
throw new ArgumentNullException(nameof(parentAssemblyNode));
if (type == null)
throw new ArgumentNullException(nameof(type));
this.type = type;
this.parentAssemblyNode = parentAssemblyNode;
this.TypeDefinition = type;
this.ParentAssemblyNode = parentAssemblyNode;
this.LazyLoading = true;
}
public TypeDefinition TypeDefinition {
get { return type; }
}
public AssemblyTreeNode ParentAssemblyNode {
get { return parentAssemblyNode; }
}
public string Name {
get { return type.Name; }
}
public string Namespace {
get { return type.Namespace; }
}
public override object Text {
get { return HighlightSearchMatch(this.Language.FormatTypeName(type), type.MetadataToken.ToSuffixString()); }
}
public TypeDefinition TypeDefinition { get; }
public AssemblyTreeNode ParentAssemblyNode { get; }
public string Name => TypeDefinition.Name;
public string Namespace => TypeDefinition.Namespace;
public override object Text => HighlightSearchMatch(this.Language.FormatTypeName(TypeDefinition), TypeDefinition.MetadataToken.ToSuffixString());
public override bool IsPublicAPI {
get {
switch (type.Attributes & TypeAttributes.VisibilityMask) {
switch (TypeDefinition.Attributes & TypeAttributes.VisibilityMask) {
case TypeAttributes.Public:
case TypeAttributes.NestedPublic:
case TypeAttributes.NestedFamily:
@ -80,8 +68,8 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -80,8 +68,8 @@ namespace ICSharpCode.ILSpy.TreeNodes
{
if (!settings.ShowInternalApi && !IsPublicAPI)
return FilterResult.Hidden;
if (settings.SearchTermMatches(type.Name)) {
if (settings.Language.ShowMember(type))
if (settings.SearchTermMatches(TypeDefinition.Name)) {
if (settings.Language.ShowMember(TypeDefinition))
return FilterResult.Match;
else
return FilterResult.Hidden;
@ -92,45 +80,39 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -92,45 +80,39 @@ namespace ICSharpCode.ILSpy.TreeNodes
protected override void LoadChildren()
{
if (type.BaseType != null || type.HasInterfaces)
this.Children.Add(new BaseTypesTreeNode(type));
if (!type.IsSealed)
this.Children.Add(new DerivedTypesTreeNode(parentAssemblyNode.AssemblyList, type));
foreach (TypeDefinition nestedType in type.NestedTypes.OrderBy(m => m.Name, NaturalStringComparer.Instance)) {
this.Children.Add(new TypeTreeNode(nestedType, parentAssemblyNode));
if (TypeDefinition.BaseType != null || TypeDefinition.HasInterfaces)
this.Children.Add(new BaseTypesTreeNode(TypeDefinition));
if (!TypeDefinition.IsSealed)
this.Children.Add(new DerivedTypesTreeNode(ParentAssemblyNode.AssemblyList, TypeDefinition));
foreach (TypeDefinition nestedType in TypeDefinition.NestedTypes.OrderBy(m => m.Name, NaturalStringComparer.Instance)) {
this.Children.Add(new TypeTreeNode(nestedType, ParentAssemblyNode));
}
foreach (FieldDefinition field in type.Fields.OrderBy(m => m.Name, NaturalStringComparer.Instance)) {
foreach (FieldDefinition field in TypeDefinition.Fields.OrderBy(m => m.Name, NaturalStringComparer.Instance)) {
this.Children.Add(new FieldTreeNode(field));
}
foreach (PropertyDefinition property in type.Properties.OrderBy(m => m.Name, NaturalStringComparer.Instance)) {
foreach (PropertyDefinition property in TypeDefinition.Properties.OrderBy(m => m.Name, NaturalStringComparer.Instance)) {
this.Children.Add(new PropertyTreeNode(property));
}
foreach (EventDefinition ev in type.Events.OrderBy(m => m.Name, NaturalStringComparer.Instance)) {
foreach (EventDefinition ev in TypeDefinition.Events.OrderBy(m => m.Name, NaturalStringComparer.Instance)) {
this.Children.Add(new EventTreeNode(ev));
}
HashSet<MethodDefinition> accessorMethods = type.GetAccessorMethods();
foreach (MethodDefinition method in type.Methods.OrderBy(m => m.Name, NaturalStringComparer.Instance)) {
HashSet<MethodDefinition> accessorMethods = TypeDefinition.GetAccessorMethods();
foreach (MethodDefinition method in TypeDefinition.Methods.OrderBy(m => m.Name, NaturalStringComparer.Instance)) {
if (!accessorMethods.Contains(method)) {
this.Children.Add(new MethodTreeNode(method));
}
}
}
public override bool CanExpandRecursively {
get { return true; }
}
public override bool CanExpandRecursively => true;
public override void Decompile(Language language, ITextOutput output, DecompilationOptions options)
{
language.DecompileType(type, output, options);
language.DecompileType(TypeDefinition, output, options);
}
#region Icon
public override object Icon
{
get { return GetIcon(type); }
}
public override object Icon => GetIcon(TypeDefinition);
public static ImageSource GetIcon(TypeDefinition type)
{
@ -195,10 +177,6 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -195,10 +177,6 @@ namespace ICSharpCode.ILSpy.TreeNodes
return type.IsSealed && type.IsAbstract;
}
#endregion
MemberReference IMemberTreeNode.Member {
get { return type; }
}
MemberReference IMemberTreeNode.Member => TypeDefinition;
}
}

Loading…
Cancel
Save