Created
April 28, 2025 01:08
-
-
Save jhavenz/e0651ab90cd1f945dcdcb0620ffd6a5f to your computer and use it in GitHub Desktop.
Rider/Resharper CSharpFile.xml settings: Public -> Protected -> Private format order
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<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