2011-02-19 2 views
7

은 그것의 이름을 아시는하여 변수의 값을 얻을 수있는 방법은 다음과 같이 있나요 :C#으로 이름으로 변수를 얻기

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

내가 일반적으로이

같은 변수에 액세스 할 때
double temp = MyClass.VariableName; 
+1

나는 당신이 이것을하기 위해 필요한 컨텍스트에 대해 궁금합니다. 일반적으로 속성으로 값을 액세스하는 것은 충분하지 않습니다. –

답변

19

reflection을 사용할 수 있습니다. 예를 들어 PropertyNameMyClass에 공개 property 그리고 당신은 당신이 할 수이 클래스의 인스턴스가있는 경우 : 그것은 field 공공의 경우

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

: 물론

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

당신이 알고 있어야를 그 반사 아무튼 비용이 들지 않는다. 직접 부동산/현장 접근에 비해 성과 위약이있을 수 있습니다.

+2

주의하십시오. 이것을 자주 사용하는 것은 매우 느릴 수 있습니다. –

+0

@Erno, 예, 절대적으로. –

+0

리플렉션이 10 개의 스위치 필터보다 느려 집니까? – Andreas

관련 문제