public IGameBoardViewModel <T> ResetBoard(Func <GameBoardCoordinate, T> getContent) { try { var rows = new List <ICollection <IGameBoardCellViewModel <T> > >(_rowCount); var gameBoard = new Dictionary <GameBoardCoordinate, IGameBoardCellViewModel <T> >(); foreach (var row in _gameBoardService.GenerateCells(_rowCount, _columnCount, getContent)) { var column = new List <IGameBoardCellViewModel <T> >(_columnCount); foreach (var cell in row) { var coordinate = cell.Coordinate; gameBoard[coordinate] = cell; column.Add(cell); } rows.Add(column); } _gameBoard = gameBoard; RowsAndColumns = rows; } catch (Exception e) { // TODO: } return(this); }