How often do you derive a class and re-create all of the base constructors? This is not an uncommon task, let’s take a custom exception class for example:
public class MyException: Exception { }
If you right click on Exception and pick Go to Definition from the context menu you’ll see that the Exception class has four constructors:
public class Exception : ISerializable, _Exception { public Exception(); public Exception(string message); protected Exception(SerializationInfo info, StreamingContext context); public Exception(string message, Exception innerException); }
And you better re-create all four in your derived MyException class if you want to follow the design guidelines. This is how MyException should look like (without custom code that is):
public class MyException: Exception { public MyException() { } public MyException(string message) : base(message) { } public MyException(string message, Exception innerException) : base(message, innerException) { } protected MyException(SerializationInfo info, StreamingContext context) : base(info, context) { } }
This is a straightforward derived Exception class definition and needless to say it is quite boring to create all those constructors again and again. That’s why [CodeRush] has a one-click base constructors recreation feature. Position the caret somewhere on the Exception word and invoke [CodeRush] with keyboard shortcut (by default the shortcut is Ctrl+CEDILLA) and instantly all of those boring-to-recreate constructors appear from nowhere. Brilliant.