CA1515: Consider making public types internal
Property | Value |
---|---|
Rule ID | CA1515 |
Title | Consider making public types internal |
Category | Maintainability |
Fix is breaking or non-breaking | Non-breaking |
Enabled by default in .NET 8 | No |
Cause
A type inside an executable assembly is declared as public.
Rule description
Unlike a class library, an application's API isn't typically referenced publicly, so types can be marked internal
.
Internal types, in turn, can benefit from various code analyzers that target non-public APIs.
How to fix violations
Mark the type as internal
.
Example
The following code snippet shows a violation of CA1515:
// Inside a project with <OutputKind>Exe</OutputKind>
public class Program
{
public static void Main(string[] args)
{
}
}
Public Class Program
Public Shared Sub Main(args As string())
End Sub
End Class
The following code snippet fixes the violation:
// Inside a project with <OutputKind>Exe</OutputKind>
internal class Program
{
public static void Main(string[] args)
{
}
}
Friend Class Program
Public Shared Sub Main(args As string())
End Sub
End Class
When to suppress warnings
It's safe to suppress a violation of this rule if you're not concerned about the maintainability of your code.
Suppress a warning
If you just want to suppress a single violation, add preprocessor directives to your source file to disable and then re-enable the rule.
#pragma warning disable CA1515
// The code that's violating the rule is on this line.
#pragma warning restore CA1515
To disable the rule for a file, folder, or project, set its severity to none
in the configuration file.
[*.{cs,vb}]
dotnet_diagnostic.CA1515.severity = none
For more information, see How to suppress code analysis warnings.