diff --git a/ICSharpCode.Decompiler/CSharp/CallBuilder.cs b/ICSharpCode.Decompiler/CSharp/CallBuilder.cs index 5128297fa..4254dcac8 100644 --- a/ICSharpCode.Decompiler/CSharp/CallBuilder.cs +++ b/ICSharpCode.Decompiler/CSharp/CallBuilder.cs @@ -777,7 +777,7 @@ namespace ICSharpCode.Decompiler.CSharp bool requireTarget; ResolveResult targetResolveResult; if ((allowedTransforms & CallTransformation.RequireTarget) != 0) { - if (expressionBuilder.HidesVariableWithName(method.Name)) { + if (settings.AlwaysQualifyMemberReferences || expressionBuilder.HidesVariableWithName(method.Name)) { requireTarget = true; } else { if (method.IsLocalFunction) @@ -1099,7 +1099,7 @@ namespace ICSharpCode.Decompiler.CSharp TranslatedExpression target, List arguments, string[] argumentNames) { bool requireTarget; - if (method.AccessorOwner.SymbolKind == SymbolKind.Indexer || expressionBuilder.HidesVariableWithName(method.AccessorOwner.Name)) + if (settings.AlwaysQualifyMemberReferences || method.AccessorOwner.SymbolKind == SymbolKind.Indexer || expressionBuilder.HidesVariableWithName(method.AccessorOwner.Name)) requireTarget = true; else if (method.IsStatic) requireTarget = !expressionBuilder.IsCurrentOrContainingType(method.DeclaringTypeDefinition); diff --git a/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs b/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs index 672a6637e..edbdf911d 100644 --- a/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs +++ b/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs @@ -226,7 +226,7 @@ namespace ICSharpCode.Decompiler.CSharp bool RequiresQualifier(IMember member, TranslatedExpression target) { - if (HidesVariableWithName(member.Name)) + if (settings.AlwaysQualifyMemberReferences || HidesVariableWithName(member.Name)) return true; if (member.IsStatic) return !IsCurrentOrContainingType(member.DeclaringTypeDefinition); diff --git a/ICSharpCode.Decompiler/DecompilerSettings.cs b/ICSharpCode.Decompiler/DecompilerSettings.cs index 32623ecd6..df41aa008 100644 --- a/ICSharpCode.Decompiler/DecompilerSettings.cs +++ b/ICSharpCode.Decompiler/DecompilerSettings.cs @@ -619,6 +619,26 @@ namespace ICSharpCode.Decompiler } } + bool alwaysQualifyMemberReferences = false; + + /// + /// Gets/Sets whether to always qualify member references. + /// true: this.DoSomething(); + /// false: DoSomething(); + /// default: false + /// + [Category("Other")] + [Description("DecompilerSettings.AlwaysQualifyMemberReferences")] + public bool AlwaysQualifyMemberReferences { + get { return alwaysQualifyMemberReferences; } + set { + if (alwaysQualifyMemberReferences != value) { + alwaysQualifyMemberReferences = value; + OnPropertyChanged(); + } + } + } + bool alwaysShowEnumMemberValues = false; /// diff --git a/ILSpy/Properties/Resources.Designer.cs b/ILSpy/Properties/Resources.Designer.cs index 32289de3d..dc324a9e4 100644 --- a/ILSpy/Properties/Resources.Designer.cs +++ b/ILSpy/Properties/Resources.Designer.cs @@ -648,6 +648,15 @@ namespace ICSharpCode.ILSpy.Properties { } } + /// + /// Looks up a localized string similar to Always qualify member references. + /// + public static string DecompilerSettings_AlwaysQualifyMemberReferences { + get { + return ResourceManager.GetString("DecompilerSettings.AlwaysQualifyMemberReferences", resourceCulture); + } + } + /// /// Looks up a localized string similar to Always show enum member values. /// diff --git a/ILSpy/Properties/Resources.resx b/ILSpy/Properties/Resources.resx index f5cb6e288..e61f61bb9 100644 --- a/ILSpy/Properties/Resources.resx +++ b/ILSpy/Properties/Resources.resx @@ -246,6 +246,9 @@ Are you sure you want to continue? Always cast targets of explicit interface implementation calls + + Always qualify member references + Always show enum member values