Получение переменной по имени в C#

есть ли способ получить значение переменной, просто зная ее имя, например:

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

когда я обычно получаю доступ к переменной, как это

double temp = MyClass.VariableName;

2 ответов


вы могли бы использовать отражение. Например, если PropertyName общественная свойства on MyClass и у вас есть экземпляр этого класса можно:

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

если это публичный поле:

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

конечно, вы должны знать, что отражение не приходит бесплатно. Может быть штраф за производительность по сравнению с прямым доступом к собственности / полю.


вам нужно будет использовать отражение. Вижу http://msdn.microsoft.com/en-us/library/z919e8tw(в=против 80).аспн для более подробной информации.