Получение переменной по имени в 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).аспн для более подробной информации.