Mar
1
2010

Fun with .net: Programmatically determine variable name

This is the second in a series of blog posts high lighting interesting snippets hacks I have run across. Although these do work, I do not recommend trying them in production code.

Have you ever re-factored some code, only to find out that you missed a place were a variable name was referred to in a string? Let’s say you were checking the input of a method, and throw an exception if it was out of bounds.

if (string.IsNullOrEmpty(someInput))
{
    throw new ArgumentNullException("someInput");
}

 

With this trick, you will never have to worry about forgetting to update the ArgumentNullException when you change the parameter name. It will programmatically determine the variable name for you!

void CheckInput(string someInput)
{
    if (string.IsNullOrEmpty(someInput))
    {
        //do not do this...ever!
        string varName = NameOfVariable(() => someInput);
        throw new ArgumentNullException(varName);
    }
}

string NameOfVariable(Expression<Func<object>> expressionTree)
{
    return ((MemberExpression)expressionTree.Body).Member.Name;
}

 

Ok, ok…so this falls apart fast, and I feel dirty for even sharing.  Just don’t use this in production…Or anywhere for that matter!

Add comment




biuquote
Loading


AdSense

Software engineer by hobby and trade. When I am not sitting in front of a computer, you can find me playing with my kids. I am lucky enough to be married to my best friend and high school sweetheart. Life couldn't be better!

 

All content is mine, not my employers

Chronology

Tweets

stumped over a design in my app...:(
1 day ago via Silver Bird
RT @ramseyshow: Blake: US adds 243,000 jobs in January and unemployment rate drops to 8.3%, lowest in three years. (AP)
3 days ago via rowi
RT @jnonis: Amen! Walking with ppl does! RT @stephenNcollins I dare say that boycotting a business in the name of Jesus has never won an ...
3 days ago via rowi
@danctheduck wife and I are big tea drinkers though. That or water is about all we have
3 days ago via WindowsLive
@danctheduck lol. We go through 3 pots/day (pot is 30oz) brew at least 3 times or else It gets pricy :) breville tea maker ftw
3 days ago via WindowsLive
@danctheduck how do u brew your TKY? Usually do mine at 195 for 3:30
3 days ago via rowi
@danctheduck wait...now I see it. Stopping by next time I'm in seattle
3 days ago via rowi
Follow me on Twitter