Browse Source

Fix #2771: Allow MetadataTypeDefinition.DefaultMemberName to return null if DefaultMemberAttribute is not present.

pull/2804/head
Siegfried Pammer 3 years ago
parent
commit
b85d1ba65a
  1. 7
      ICSharpCode.Decompiler/TypeSystem/Implementation/MetadataTypeDefinition.cs

7
ICSharpCode.Decompiler/TypeSystem/Implementation/MetadataTypeDefinition.cs

@ -58,6 +58,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -58,6 +58,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
IEvent[] events;
IMethod[] methods;
List<IType> directBaseTypes;
bool defaultMemberNameInitialized;
string defaultMemberName;
internal MetadataTypeDefinition(MetadataModule module, TypeDefinitionHandle handle)
@ -459,7 +460,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -459,7 +460,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
public string DefaultMemberName {
get {
string defaultMemberName = LazyInit.VolatileRead(ref this.defaultMemberName);
if (defaultMemberName != null)
if (defaultMemberName != null || defaultMemberNameInitialized)
return defaultMemberName;
var metadata = module.metadata;
var typeDefinition = metadata.GetTypeDefinition(handle);
@ -475,7 +476,9 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -475,7 +476,9 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
break;
}
}
return LazyInit.GetOrSet(ref this.defaultMemberName, defaultMemberName ?? "Item");
defaultMemberName = LazyInit.GetOrSet(ref this.defaultMemberName, defaultMemberName);
defaultMemberNameInitialized = true;
return defaultMemberName;
}
}
#endregion

Loading…
Cancel
Save