The Make Extension refactoring converts a regular method into an extension method based on the selected parameter type. Extension methods allow you to extend an existing type, including classes, structures or interfaces, with the new functionality, without having to derive from that class and without modifying the code of the type itself. The extended type is taken from the parameter that you choose when applying the refactoring.
Read more…
Overridden members (that include an ‘override‘ keyword) provide a new implementation of a virtual or an abstract member with the same signature. Compile-time errors occur when member override rules are violated. To declare an overridden member according to the language specification without violating its rules, CodeRush suggests several overridden-specific code issues.
Read more…
In addition to CodeRush code issues for virtual members, there are similar code issues for abstract members. An abstract member is similar to a virtual member but with no implementation, in other words, it has no body. In contrast to virtual members, abstract members must be implemented in a derived class if one is inherited from the class that contains an abstract member.
Read more…
As you probably know, if a member is declared with the ‘virtual‘ keyword, derived classes can override the implementation of this member. In a virtual member invocation, the run-time type of the instance for which that invocation takes place determines the actual member implementation to invoke: whether it is a base virtual member or an overridden member from a derived class. The virtual member is declared like an instance member with addition of a ‘virtual‘ keyword to its declaration.
Read more…
The Complex Member code issue of the smell type highlights complex members. A complex member is a member that may have too much code inside. The issue is based on a calculation of the Maintenance Complexity code metric. Maintenance complexity is a measure the structural complexity of a node (and its children), and represents how easy or challenging a method will be to understand and maintain. Scores closer to zero are simple. Small methods usually score below 150, while large/complex methods will exceed 500.
Read more…
The Create Descendant code provider shipped in CodeRush generates a descendant class for the active class, providing overrides for abstract members, if any. The second version of the code provider named Create Descendant (with virtual overrides), in addition to the Create Descendant, adds overrides for virtual members into a descendant class.
Read more…
Reorganization of the code is a great practice to improve code readability. If you prefer to sort your type members like this:
class {
private fields
constructors
public properties
public methods
private methods
}
or any other order, you can use the Member Organizer CodeRush plug-in for this purpose.
Read more…
The Move to Region (also known as Member Mover) CodeRush feature extends the Member drop down menu with a menu item that allows you to move the active member to a region according to your preference:

Read more…