Получение переменной по имени в C # - PullRequest
10 голосов
/ 20 февраля 2011

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

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

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

double temp = MyClass.VariableName;

1 Ответ

25 голосов
/ 20 февраля 2011

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

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

Если это открытое поле :

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

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

...