diff --git a/ICSharpCode.Decompiler/TypeSystem/Implementation/MetadataTypeDefinition.cs b/ICSharpCode.Decompiler/TypeSystem/Implementation/MetadataTypeDefinition.cs index 560683e55..8417e33b0 100644 --- a/ICSharpCode.Decompiler/TypeSystem/Implementation/MetadataTypeDefinition.cs +++ b/ICSharpCode.Decompiler/TypeSystem/Implementation/MetadataTypeDefinition.cs @@ -58,6 +58,7 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation IEvent[] events; IMethod[] methods; List directBaseTypes; + bool defaultMemberNameInitialized; string defaultMemberName; internal MetadataTypeDefinition(MetadataModule module, TypeDefinitionHandle handle) @@ -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 break; } } - return LazyInit.GetOrSet(ref this.defaultMemberName, defaultMemberName ?? "Item"); + defaultMemberName = LazyInit.GetOrSet(ref this.defaultMemberName, defaultMemberName); + defaultMemberNameInitialized = true; + return defaultMemberName; } } #endregion