Skip to content

Latest commit

 

History

History
67 lines (49 loc) · 2.06 KB

File metadata and controls

67 lines (49 loc) · 2.06 KB

SA1202

TypeName SA1202ElementsMustBeOrderedByAccess
CheckId SA1202
Category Ordering Rules

Cause

An element within a C# code file is out of order within regard to access level, in relation to other elements in the code.

Rule description

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.

Interfaces and default interface members

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 and primary constructors

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.

How to fix violations

To fix an instance of this violation, order the elements in the file in the order described above.

How to suppress violations

[SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1202:ElementsMustBeOrderedByAccess", Justification = "Reviewed.")]
#pragma warning disable SA1202 // ElementsMustBeOrderedByAccess
#pragma warning restore SA1202 // ElementsMustBeOrderedByAccess