public void HandleUserInput(object sender, EventArgs e) { var castedArguments = e as UserCommandArgs; if (castedArguments == null) { throw new ArgumentException("Invalid event arguments are provided"); } var parsedCommand = this.GetCommand(castedArguments.CommandToPass); parsedCommand.Execute(this.Context); }