I am implementing a DelegateCommand, and when I was about to implement the constructor(s), I came up with the following two design choices:
1: Having multiple overloaded constructors
public DelegateCommand(Action<T> execute) : this(execute, null) { } public DelegateCommand(Action<T> execute, Func<T, bool> canExecute) { this.execute = execute; this.canExecute = canExecute; } 2: Having only one constructor with an optional parameter
public DelegateCommand(Action<T> execute, Func<T, bool> canExecute = null) { this.execute = execute; this.canExecute = canExecute; } I don't know which one to use because I don't know what possible advantages / disadvantages come with either of the two proposed ways. Both can be called like this:
var command = new DelegateCommand(this.myExecute); var command2 = new DelegateCommand(this.myExecute, this.myCanExecute); Can someone please point me in the right direction and give feedback?