== Why is this an issue?

When a class has only a `private` constructor, it can't be instantiated except within the class itself.
Such classes can be considered https://en.wikipedia.org/wiki/Dead_code[dead code] and should be fixed

=== Exceptions

* Classes that access their private constructors (https://en.wikipedia.org/wiki/Singleton_pattern[singletons] or https://learn.microsoft.com/en-us/dotnet/architecture/microservices/microservice-ddd-cqrs-patterns/enumeration-classes-over-enum-types[smart enums]) are ignored.
* Classes with only `static` members are also ignored because they are covered by Rule S1118.
* Classes that derive from https://learn.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.safehandle[SafeHandle] since they can be instantiate through https://learn.microsoft.com/en-us/dotnet/standard/native-interop/pinvoke[P/Invoke].
