2013-01-02 4 views
1

나는 방법과 같이 있습니다PropertyInfo.SetValue 자식 개체의?

var foo = new Foo(); 
MapObject(myMap, foo); 

private void MapObject(Dictionary<string, PropertyInfo> map, object myObject) 
{ 
    foreach(var key in map.Keys) 
    { 
    int someValue = myDataSet.GetValue(key); 

    PropertyInfo pInfo = map[key]; 
    pInfo.SetValue(myObject, someValue, null); 
    } 
} 

문제는 때때로 PropertyInfo가 인 myObject의 하위 클래스에있는 속성을 참조하는 것입니다. 예를 들어이 경우

class Foo 
{ 
    Bar b { get; set; } 
} 

class Bar 
{ 
    string Test { get; set; } 
} 

, PropertyInfo.SetValue는 객체 푸에 속성 테스트를 설정할 수 있기 때문에 형식 예외가 발생합니다. 현재 PropertyInfo가 속한 클래스를 알 수있는 방법이 없습니다 (이상한 사용자 정의 ORM의 일부 임). PropertyInfo가 파생 된 개체를 알 수있는 방법이 있습니까? 당신의 목표는 Bar.Testnull에 설정하는 경우

+0

'바'에 대한 참조가 있지만 '특성'의 '푸'가 아닙니다. 그렇다면'바 '에서'푸'를 얻을 수있는 방법이 없습니다. –

+0

문제를 명확하게하기 위해 질문을 다시 작성했습니다. 잘하면 ..? – ConditionRacer

답변

3

, 당신은이를 호출 할 것이다 :

물론
myObject.Bar.Test = null; 

, 귀하의 예제에서 이것이를 슬로우 :

pInfo.SetValue(myObject.Bar, 100, null); 

는이에 의미와 동일 예외는 myObject.Barnull이 될 것이므로

관련 문제