| TypeName | SA1202ElementsMustBeOrderedByAccess |
| CheckId | SA1202 |
| Category | Ordering Rules |
An element within a C# code file is out of order within regard to access level, in relation to other elements in the code.
A violation of this rule occurs when the code elements within a file do not follow a standard ordering scheme based on access level.
To comply with this rule, adjacent elements of the same type should be positioned in the following order by access level:
- public
- internal
- protected internal
- protected
- private protected
- private
📝 Static constructors and explicitly implemented interface members are considered public for the purposes of this rule.
Complying with a standard ordering scheme based on access level can increase the readability and maintainability of the file and make it easier to identify the public interface that is being exposed from a class.
Default interface members (including members with implementations and static interface members) follow the same access
ordering as class members. Within an interface, public members should appear before internal, protected internal,
protected, private protected, and private members.
Records (including positional records) and record structs follow the same ordering rules as classes and structs. Primary constructor parameters that become properties do not change the expected access ordering for the remaining members.
To fix an instance of this violation, order the elements in the file in the order described above.
[SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1202:ElementsMustBeOrderedByAccess", Justification = "Reviewed.")]#pragma warning disable SA1202 // ElementsMustBeOrderedByAccess
#pragma warning restore SA1202 // ElementsMustBeOrderedByAccess