Getting variable by name in C#

Andreas picture Andreas · Feb 19, 2011 · Viewed 25.7k times · Source

Is there a way to get the value of a variable just by knowing the name of it, like this:

double temp = (double)MyClass.GetValue("VariableName");

When I normally would access the variable like this

double temp = MyClass.VariableName;

Answer

Darin Dimitrov picture Darin Dimitrov · Feb 19, 2011

You could use reflection. For example if PropertyName is a public property on MyClass and you have an instance of this class you could:

MyClass myClassInstance = ...
double temp = (double)typeof(MyClass).GetProperty("PropertyName").GetValue(myClassInstance, null);

If it's a public field:

MyClass myClassInstance = ...
double temp = (double)typeof(MyClass).GetField("FieldName").GetValue(myClassInstance);

Of course you should be aware that reflection doesn't come free of cost. There could be a performance penalty compared to direct property/field access.