They filled nearly all of their major needs while still adding luxury selections at positions they were strong at. They replenished their 2015 draft by acquiring new fourth- and seventh-round picks to replace the picks they traded away for Stevie Johnson and Jonathan Martin.

While it’s silly to grade a draft before any players have even seen a minicamp, it feels like the 49ers have put together a class with the potential to become one of their best ever. The 49ers moved up and down the draft board to come down with the players they wanted at positions of good value.

This slideshow will attempt to rank the 49ers’ 12 draft choices from best to worst before they ever take a snap. There are three elements that go into this ranking:

The talent level of the players. Obviously, the better a player is expected to be in the NFL, the better the pick is.

The need for San Francisco. Taking a player who will fill a need is better than taking an equivalent player at a position the team’s already set at.

The value of the selection. All things being equal, finding a talented player who’s slid in the draft is better than reaching for a player before the consensus had him going.

It’s obviously a bit of a subjective ranking—until a player takes the field, there’s no way to have anything like a fact-based ranking of how good a pick was.

With those caveats in place, let’s take one final look at all 12 draft choices.

1. Marcus Martin, C, USC (No. 70 Pick)

In 10 years’ time, it’s quite possible Martin will be the player who has started the most games for the 49ers. That kind of value in the third round makes him my favorite pick of the draft.

Martin was projected as a second-round pick by CBS, thanks to his huge frame and versatility to play both center and guard. He’s great at going out to the second level and paving the way for the running backs behind him; on a run-first team like San Francisco, he fits perfectly.

The 49ers have a couple options with Martin. He could battle Daniel Kilgore for the starting center role this season, or he could play a season as the backup interior lineman of choice and replace Mike Iupati when his contract expires after this season.

The fact that they got Martin by trading down and grabbing an extra draft pick is the icing on the cake. I thought they’d have to use one of their two second-round picks to take Martin, but watching as he slid to them in the third round is just fantastic. A perfect combination of talent, need and value.

2. Bruce Ellington, WR, South Carolina (No. 106 Pick)

For as much as I like Martin, the 49ers started Day 3 with an acquisition of equal value. I nearly put Ellington as the best pick in this class.

Ellington was considered by many to be a second-day pick. While he’s only 5’9”, he has an explosive burst off the line. Get the ball in his hands, and he becomes a weapon with excellent balance, agility and double-moves. His speed reminds me a bit of Jerry Rice; neither put up lightning-fast numbers at the combine, but on the field in pads, both are rarely caught.

When Ellington slipped to the fourth round thanks to a deep receiving class, he became a huge bargain. He has the potential to take the top off opposing defenses with his speed, giving the 49ers an option none of their receivers really have. He’s also an option to return punts and kicks if the 49ers get rid of LaMichael James.

I don’t imagine Ellington will be any more than the fourth receiver to start his career, but he’ll still have value on special teams. The addition of Ellington and Stevie Johnson has turned the wide receiver position from a weakness to a strength.

3. Carlos Hyde, RB, Ohio State (No. 57 Pick)

Most pundits, myself included, didn’t consider running back a major need in the run-up to the draft.

Yes, Frank Gore is old, and this will likely be his final season as the starting running back. He’s still got juice in the tank, however, and besides, the 49ers drafted Marcus Lattimore last season. That’s more than adequate, right?

Well, the fact remains that Lattimore has never seen an NFL field. He has all the potential in the world, but until we can actually see him on the field, we won’t know for sure how he’ll translate to the professional level. Using a draft choice on the top running back in the draft is more than hedging their bets; it’s setting up a potential one-two punch come 2015.

Hyde is a beast. He’s not going to run around you; he’s going to run through you. With a head of steam, he’s going to smash through defensive linemen, creating his own holes and plunging to the second level. He’s also got better-than-expected hands for a bruiser; while he’ll never be Darren Sproles out there, he can catch the ball out of the backfield.

Hyde was arguably the best player available when the 49ers made the selection. It’ll be fascinating to watch him battle with Marcus Lattimore for carries this preseason. In the future, hopefully they’ll spell one another and continue San Francisco’s run-game dominance.

4. Dontae Johnson, CB, North Carolina State (No. 129 Pick)

This is one pick where I disagree with CBS’ analysis. It had him as a fifth- or sixth-round selection, but I think his raw athleticism was worth developing at a higher selection.

At 6’2”, 200 pounds, Johnson has a good combination of height and athleticism. So often it seems the 49ers get stuck with smaller cornerbacks; Chris Culliver is 6’0”, but Tramaine Brock is only 5’10”. Johnson’s height actually reminds me quite a bit of the bigger cornerbacks the Seattle Seahawks have been taking; if you can’t beat them, join them?

Johnson started his college career at safety before moving to cornerback, so he’s still a bit raw. He’s a high-upside guy who needs some more developmental work, but I’m a big fan of his body type and potential. If he doesn’t work out at corner, he could still move back to safety, though I’m not sure his tackling is up to NFL standards there.

I thought the 49ers absolutely killed the fourth round, and I enjoyed the Johnson pick immensely.

5. Brandon Thomas, OG, Clemson (No. 100 Pick)

With the last pick on the second day of the draft, the 49ers went back to their strategy of drafting players to stash on the injured lists.

The 49ers would be hard-pressed to find room for all 12 draft picks on their 53-man roster. This is a team that has made the NFC Championship Game in three consecutive seasons; it's loaded with talent as it is.

So, a player like Thomas, who can be put on the physically unable to perform list for a season, makes a lot of sense. He can come in, learn the system academically and get hands-on work with San Francisco’s coaching staff. In return, the 49ers get a firsthand look on how his rehab is going.

Thomas tore his ACL when working out for the Saints in the predraft process, which gave his draft stock a massive hit. He may have been a second-round pick, pre-injury, so getting a player with that level of talent at the end of the third round is a steal.

He played tackle in college, so he could fill in there in a pinch. I think he has a future as the top reserve offensive lineman on the team, coming in whenever someone gets hurt. That’s value at the end of the third round.

6. Trey Millard, FB, Oklahoma (No. 245 Pick)

Like Thomas, Millard could in theory be stashed on injured reserve, as he’s still recovering from an ACL injury he suffered at the end of October. He’s more than just a warm body, however.

Millard can run, block, catch and cover kicks, making him a jack-of-all-trades. He’s not your traditional brute-force fullback; he actually has some decent running ability too.

However, where Millard will be best used is a special teams captain and short-yardage fill-in. He’s a Swiss army knife sort of player who could find a spot working as whatever he’s asked to do. For a seventh-round flier, you really can’t ask for anything more.

I do wonder a bit about picking a fullback, as the team’s already fine at the position with Bruce Miller. You’re not drafting starters in the seventh round or anything, but carrying two fullbacks on a 53-man roster would be an odd decision.

7. Chris Borland, ILB, Wisconsin (No. 77 Pick)

Now we’re beginning to get down to some minor nitpicks, though I’m still fine with all these selections.

Borland certainly can play. He had 50 career tackles for loss and 14 forced fumbles at Wisconsin, and he has a fantastic motor. He is a high-effort pursuit player who can bring pressure on the blitz or cover responsibilities in zone with equal aplomb.

I just wonder how his size will translate to the NFL. He’s only 5’11”, and his arms are only 29.25 inches long. That could end up with him swallowed up by larger offensive linemen at the NFL level. I also wonder about value; the 49ers signed inside linebacker Shayne Skov as an undrafted free agent, and if all they’re looking for is a short-term replacement for NaVorro Bowman, Skov might be a better value.

Still, Borland has proven he can play at the college level, and it’s worth at least seeing if he can overcome his physical limitations in the NFL. Learning from Bowman and Patrick Willis, Borland has potential to develop into a special player.

8. Kaleb Ramsey, DE, Boston College (No. 243 Pick)

Ramsey’s yet another option for the PUP list, thanks to a right calf injury he suffered.

Ramsey’s got serious durability issues. He missed three games in 2013 with a hamstring injury, tore his left calf to end his season in 2012, sat out 2011 with plantar fasciitis and missed five more games in 2009 with leg injuries.

Add all that injury history into the fact that he was a six-year player in college and thus is 25 in June, and you begin to wonder if Ramsey will ever be able to get onto an NFL field.

When healthy, Ramsey has shown strength. He benched 36 reps at the combine, tops among defensive linemen, yet is athletic for his size with decent initial quickness.

I just think he’s too fragile to be a significant contributor in the NFL. As a seventh-round flier, he’s worth taking a look at, but the pick didn’t thrill me.

9. Jimmie Ward, S, Northern Illinois (No. 30 Pick)

Ranking Ward ninth doesn’t mean I think he’ll be the ninth-best player in his class. On a pure talent level, I think he’ll be one of the top-three players in the class; Marcus Martin and Carlos Hyde are right up there on his level.

Ward was just a bit of a surprising pick when players like Ohio State’s Bradley Roby were still on the board. The 49ers plan to use Ward to fill the nickelback role in his first season, and I think he fits better physically at the corner position in the NFL.

It remains to be seen where Ward will be used in the long run. Will he be a safety who comes in to play cornerback, or is he transitioning to cornerback full time? Until that question is answered—and I presume the 49ers do have an answer for the question in mind—I can’t be fully sold on the pick.

I’m not strenuously opposed to the pick, however, only surprised. Ward’s an athletic player who plays with aggression. He can contribute immediately as well. Had the 49ers not picked up Antoine Bethea, I wouldn’t have any qualms with the pick whatsoever.

The pick’s also helped by the Stevie Johnson trade. I was wondering at the time why the 49ers didn’t go after Marqise Lee or Cody Latimer with the pick, but if they had the trade for Johnson in mind, the Ward pick makes much more sense.

Ward’s only ninth because the 49ers drafted so well, not because he’s a bad selection in a vacuum.

10. Aaron Lynch, DE, South Florida (No. 170 Pick)

I’m satisfied with 10 of the 49ers' 12 picks. Lynch is the lowest player who still reaches that threshold.

The 49ers will be likely be moving Lynch to outside linebacker, and physically speaking, he has all the tools to do so. At 6’5” with 34-inch arms, Lynch is a big, athletic threat. He has excellent leverage going around the edge and can make ball-carriers disappear into his massive frame.On a pure talent level, Lynch is a great pick.

There are questions, however, about his effort. NFL.com described him as a “classic underachiever” with “questionable effort, motor and desire." Those are not words you want to hear about your draft pick. Nine times out of 10, I’d rather have an overachiever with a small frame like Chris Borland than an underachiever with a large frame like Lynch.

If the 49ers can change his attitude and get him to apply consistent effort, then Lynch is a steal in the fifth round. It remains to be seen if that will happen, however.

Nos. 11 and 12: Late-Round Cornerbacks

I did a lot of research on potential cornerbacks in the lead up to the draft, but both Acker and Reaser were surprise selections—players I had not heard much about.

That’s not to say that Acker and Reaser won’t develop into solid players, and of course, an NFL staff is going to have done more work than a columnist on the Internet, but I do wonder why the 49ers took Acker and Reaser over other available players.

Marcus Roberson of Florida, Victor Hampton of South Carolina and Rashaad Reynolds of Oregon State all went undrafted. They were higher on most consensus big boards than either Acker or Reaser, so the 49ers must have seen something the majority of draft evaluators did not.

Of the 12 picks the 49ers had, these are my least favorite of the bunch. I have to question the value of these specific players, considering who else was available.

Bryan Knowles is a featured columnist for Bleacher Report, covering the San Francisco 49ers. Follow him @BryKno on Twitter.