The Convert Anonymous to Named Type refactoring converts anonymous types to nested or top-level named types in the scope of either the current method (locally) or the whole solution (globally). In the dialog box that this refactoring provides, you can also specify whether ReSharper should generate auto-properties or properties with backing fields, and opt to generate equality and formatting method overrides.
- Place the caret at either anonymous type initializer or new keyword.
Do one of the following:
- On the main menu, choose ReSharper | Refactor | Convert | Anonymous to Named Type.
- Choose Refactor | Convert | Anonymous to Named Type on the context menu.
- Press Ctrl+Shift+R, then click Anonymous to Named Type.
Specify a name for a new class, and configure the following options:
- Scope: ReSharper can convert anonymous types with compatible object initializers in the scope of either the current method or the whole solution.
- Location: the new named type can be nested in the current type, or created as an independent entity.
- How to generate properties: ReSharper can generate either read and write auto-properties, or read-only properties with backing fields in the new class.
- How to generate methods: as an option, you can choose to create stubs for Equals(), GetHashCode(), and ToString() method overrides in the new class.
- Show processed usages in 'Find Results': if this check box is selected, ReSharper shows the new named type as well as all its usages in the Find Results window
- Click Next.
Consider the example below:
The anonymous type is converted into the Declarations class:
All usages of the type found within the specified scope are modified accordingly:
If you have selected Show processed usages in 'Find Results', the new class and any modified type usages are shown in the Find Results window: