Skip to content

Instantly share code, notes, and snippets.

@jhavenz
Created April 28, 2025 01:08
Show Gist options
  • Save jhavenz/e0651ab90cd1f945dcdcb0620ffd6a5f to your computer and use it in GitHub Desktop.
Save jhavenz/e0651ab90cd1f945dcdcb0620ffd6a5f to your computer and use it in GitHub Desktop.
Rider/Resharper CSharpFile.xml settings: Public -> Protected -> Private format order
<Patterns xmlns="urn:schemas-jetbrains-com:member-reordering-patterns">
<TypePattern DisplayName="Custom Layout: Detailed Order v3">
<!-- Match primary classes, structs, interfaces, enums -->
<TypePattern.Match>
<Kind Is="Type"/>
</TypePattern.Match>
<!-- 1. Nested Types -->
<Entry DisplayName="Nested Types">
<Entry.Match> <Kind Is="Type"/> </Entry.Match>
<Entry.SortBy> <Access Order="Public Protected Private"/> </Entry.SortBy>
</Entry>
<!-- 2. Constants -->
<Entry DisplayName="Constants">
<Entry.Match> <Kind Is="Constant"/> </Entry.Match>
<Entry.SortBy> <Access Order="Public Protected Private"/> </Entry.SortBy>
</Entry>
<!-- 3. Fields and Properties (Grouped by Access, then Static, then ReadOnly) -->
<!-- Public Static ReadOnly -->
<Entry DisplayName="Public Static ReadOnly Fields and Properties">
<Entry.Match>
<And>
<Access Is="Public"/> <Static/> <Readonly/>
<Or> <Kind Is="Field"/> <Kind Is="Property"/> </Or>
</And>
</Entry.Match>
<!-- Optional: Sort within this group by Kind (Field vs Property) or Name -->
<Entry.SortBy> <Kind Order="Field Property"/> </Entry.SortBy>
</Entry>
<!-- Public Static -->
<Entry DisplayName="Public Static Fields and Properties">
<Entry.Match>
<And>
<Access Is="Public"/> <Static/> <Not><Readonly/></Not>
<Or> <Kind Is="Field"/> <Kind Is="Property"/> </Or>
</And>
</Entry.Match>
<Entry.SortBy> <Kind Order="Field Property"/> </Entry.SortBy>
</Entry>
<!-- Public Instance Readonly -->
<Entry DisplayName="Public Instance Readonly Fields and Properties">
<Entry.Match>
<And>
<Access Is="Public"/> <Not><Static/></Not> <Readonly/>
<Or> <Kind Is="Field"/> <Kind Is="Property"/> </Or>
</And>
</Entry.Match>
<Entry.SortBy> <Kind Order="Field Property"/> </Entry.SortBy>
</Entry>
<!-- Public Instance -->
<Entry DisplayName="Public Instance Fields and Properties">
<Entry.Match>
<And>
<Access Is="Public"/> <Not><Static/></Not> <Not><Readonly/></Not>
<Or> <Kind Is="Field"/> <Kind Is="Property"/> </Or>
</And>
</Entry.Match>
<Entry.SortBy> <Kind Order="Field Property"/> </Entry.SortBy>
</Entry>
<!-- Protected Static Readonly -->
<Entry DisplayName="Protected Static Readonly Fields and Properties">
<Entry.Match>
<And>
<Access Is="Protected"/> <Static/> <Readonly/>
<Or> <Kind Is="Field"/> <Kind Is="Property"/> </Or>
</And>
</Entry.Match>
<Entry.SortBy> <Kind Order="Field Property"/> </Entry.SortBy>
</Entry>
<!-- Protected Static -->
<Entry DisplayName="Protected Static Fields and Properties">
<Entry.Match>
<And>
<Access Is="Protected"/> <Static/> <Not><Readonly/></Not>
<Or> <Kind Is="Field"/> <Kind Is="Property"/> </Or>
</And>
</Entry.Match>
<Entry.SortBy> <Kind Order="Field Property"/> </Entry.SortBy>
</Entry>
<!-- Protected Instance Readonly -->
<Entry DisplayName="Protected Instance Readonly Fields and Properties">
<Entry.Match>
<And>
<Access Is="Protected"/> <Not><Static/></Not> <Readonly/>
<Or> <Kind Is="Field"/> <Kind Is="Property"/> </Or>
</And>
</Entry.Match>
<Entry.SortBy> <Kind Order="Field Property"/> </Entry.SortBy>
</Entry>
<!-- Protected Instance -->
<Entry DisplayName="Protected Instance Fields and Properties">
<Entry.Match>
<And>
<Access Is="Protected"/> <Not><Static/></Not> <Not><Readonly/></Not>
<Or> <Kind Is="Field"/> <Kind Is="Property"/> </Or>
</And>
</Entry.Match>
<Entry.SortBy> <Kind Order="Field Property"/> </Entry.SortBy>
</Entry>
<!-- Private Static Readonly -->
<Entry DisplayName="Private Static Readonly Fields and Properties">
<Entry.Match>
<And>
<Access Is="Private"/> <Static/> <Readonly/>
<Or> <Kind Is="Field"/> <Kind Is="Property"/> </Or>
</And>
</Entry.Match>
<Entry.SortBy> <Kind Order="Field Property"/> </Entry.SortBy>
</Entry>
<!-- Private Static -->
<Entry DisplayName="Private Static Fields and Properties">
<Entry.Match>
<And>
<Access Is="Private"/> <Static/> <Not><Readonly/></Not>
<Or> <Kind Is="Field"/> <Kind Is="Property"/> </Or>
</And>
</Entry.Match>
<Entry.SortBy> <Kind Order="Field Property"/> </Entry.SortBy>
</Entry>
<!-- Private Instance Readonly -->
<Entry DisplayName="Private Instance Readonly Fields and Properties">
<Entry.Match>
<And>
<Access Is="Private"/> <Not><Static/></Not> <Readonly/>
<Or> <Kind Is="Field"/> <Kind Is="Property"/> </Or>
</And>
</Entry.Match>
<Entry.SortBy> <Kind Order="Field Property"/> </Entry.SortBy>
</Entry>
<!-- Private Instance -->
<Entry DisplayName="Private Instance Fields and Properties">
<Entry.Match>
<And>
<Access Is="Private"/> <Not><Static/></Not> <Not><Readonly/></Not>
<Or> <Kind Is="Field"/> <Kind Is="Property"/> </Or>
</And>
</Entry.Match>
<Entry.SortBy> <Kind Order="Field Property"/> </Entry.SortBy>
</Entry>
<!-- 4. Constructors -->
<Entry DisplayName="Constructors">
<Entry.Match> <Kind Is="Constructor"/> </Entry.Match>
<Entry.SortBy> <Static/> </Entry.SortBy> <!-- Static constructors first -->
</Entry>
<!-- 5. Static Methods -->
<Entry DisplayName="Static Methods">
<Entry.Match> <And> <Kind Is="Method"/> <Static/> </And> </Entry.Match>
<Entry.SortBy> <Access Order="Public Protected Private"/> </Entry.SortBy>
</Entry>
<!-- 6. Instance Methods -->
<Entry DisplayName="Instance Methods">
<Entry.Match> <And> <Kind Is="Method"/> <Not><Static/></Not> </And> </Entry.Match>
<Entry.SortBy> <Access Order="Public Protected Private"/> </Entry.SortBy>
</Entry>
<!-- Optional: Other members -->
<Entry DisplayName="Events">
<Entry.Match> <Kind Is="Event"/> </Entry.Match>
<Entry.SortBy> <Access Order="Public Protected Private"/> <Static/> </Entry.SortBy>
</Entry>
<Entry DisplayName="Indexers">
<Entry.Match> <Kind Is="Indexer"/> </Entry.Match>
<Entry.SortBy> <Access Order="Public Protected Private"/> </Entry.SortBy>
</Entry>
<Entry DisplayName="Operators">
<Entry.Match> <Kind Is="Operator"/> </Entry.Match>
<Entry.SortBy> <Access Order="Public Protected Private"/> </Entry.SortBy>
</Entry>
<!-- Catch-all -->
<Entry DisplayName="Other Members"/>
</TypePattern>
</Patterns>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment