Generating Type Constructors
Alt+Insert | Constructor
The constructor generation wizard creates a non-default constructor that takes parameters for selected fields, properties and auto-properties.
All generated constructors follow the same pattern where:
- Each field, property, or auto-property included in the constructor is initialized with a parameter.
- The name of the parameter is derived from the name of the corresponding field or property.
If there are non-default base type constructors, the required parameters are added to the generated constructor and passed to the base class constructor.
In the example below, this command is used to generate a new Circle
constructor that takes two additional parameters to initialize _radius
and _center
fields.
Before generation | After generation |
---|---|
internal class Shape
{
public Shape(Color color)
{ Color = color; }
public Color Color { get; }
}
class Circle : Shape
{
int _radius;
Point _center;
public Circle(Color color) : base(color)
{
}
} | internal class Shape
{
public Shape(Color color)
{ Color = color; }
public Color Color { get; }
}
class Circle : Shape
{
int _radius;
Point _center;
public Circle(Color color) : base(color)
{
}
public Circle(Color color,
int radius, Point center) : base(color)
{
_radius = radius;
_center = center;
}
} |
To generate a constructor
- In the editor, set the caret on the type name or within a type at the line where you want to insert a constructor. If the caret is on the type name, the generated code will be added in the beginning of the type declaration.
- Press Alt+Insert or choose from the main menu. Alternatively, you can press Ctrl+Shift+A, start typing the command name in the pop-up, and then choose it there.
- In the Generate pop-up menu, select Constructor.
- In the Generate dialog that appears, select type members that should be initialized in the new constructor. Optionally, select one or several base class constructors. For every selected base constructor, a new constructor will be generated that will call the base and additionally initialize selected members.
Optionally, use the following controls in the dialog:
- Access Rights — allows you to define access rights for the generated constructor.
- Check parameters for null (appears if the class has fields or properties of nullable types) — if this check box is selected, JetBrains Rider will generate configurable null checks for each nullable parameter, for example:
if (param == null) throw new ArgumentNullException(nameof(param));
- Make parameters optional — if this check box is selected, JetBrains Rider will make all parameters of the generated constructor optional and add default values corresponding to the parameter types.
- Click OK to complete the wizard.