2012-10-26 2 views
5

는 기본 클래스 정의를 감안할 때 : 동적 타입 변환을 사용하여리플렉션을 사용하여 객체 인스턴스의 속성 값을 동적으로 설정하는 방법은 무엇입니까?

using System.Reflection; 

public class Car() 
{ 
    public int speed {get;set;} 

    public void setSpeed() 
    { 
     Type type = this.GetType(); 
     PropertyInfo property = type.GetProperty(PropertyName); 
     property.SetValue(type, Convert.ToInt32(PropertyValue), null); 
    } 
} 

이 코드 샘플을 단순화하지, 난 그냥 작업 예제 인스턴스에 해당 속성을 설정합니다.

편집 : 위 코드의 PropertyName과 PropertyValue도 단순화되었습니다. 사전

+0

을 할 수있는 순진한 타입 변환에

public void setSpeed() { Type type = this.GetType(); PropertyInfo property = type.GetProperty(PropertyName); property.SetValue(this, Convert.ToInt32(PropertyValue), null); } 

: 귀하의 경우에 코드를 변경? –

+0

@CuongLe 그것은 작동하지 않을'System.Type' 유형의 인스턴스에서'Car' 유형에 속한 속성의 값을 설정하려합니다. –

답변

7

에서

덕분에 당신은 당신이 설정하고자하는 속성을 유지 인스턴스해야 통과 첫 번째 인수. 정적 속성 인 경우 첫 번째 인수에 대해 null을 전달합니다. 당신이 당신의 현재 코드를 얻을 어떤 문제

var value = Convert.ChangeType(PropertyValue,property.PropertyType); 
    property.SetValue(this, value, null); 
+0

예 - 그게 매력처럼 작동했습니다! –

관련 문제