diff --git a/src/Meziantou.Analyzer/Rules/DoNotUseToStringIfObjectAnalyzer.cs b/src/Meziantou.Analyzer/Rules/DoNotUseToStringIfObjectAnalyzer.cs index 886f2e844..fe5145c8a 100644 --- a/src/Meziantou.Analyzer/Rules/DoNotUseToStringIfObjectAnalyzer.cs +++ b/src/Meziantou.Analyzer/Rules/DoNotUseToStringIfObjectAnalyzer.cs @@ -78,6 +78,9 @@ public void AnalyzeInterpolation(OperationAnalysisContext context) public void AnalyzeInvocation(OperationAnalysisContext context) { var operation = (IInvocationOperation)context.Operation; + if (operation.Instance?.Type?.IsAnonymousType is true) + return; + if (IsDefaultToString(operation.TargetMethod)) return; diff --git a/tests/Meziantou.Analyzer.Test/Rules/DoNotUseToStringIfObjectAnalyzerTests.cs b/tests/Meziantou.Analyzer.Test/Rules/DoNotUseToStringIfObjectAnalyzerTests.cs index 70a37d0e4..7abcb1822 100644 --- a/tests/Meziantou.Analyzer.Test/Rules/DoNotUseToStringIfObjectAnalyzerTests.cs +++ b/tests/Meziantou.Analyzer.Test/Rules/DoNotUseToStringIfObjectAnalyzerTests.cs @@ -295,6 +295,17 @@ await CreateProjectBuilder() .ValidateAsync(); } + [Fact] + public async Task ToString_AnonymousType() + { + var sourceCode = """ +new { FirstName = "" }.ToString(); +"""; + await CreateProjectBuilder() + .WithSourceCode(sourceCode) + .ValidateAsync(); + } + [Fact] public async Task Interpolation_ReproCachingIssue() {