2013-05-03 2 views
0

리플렉션을 사용하여 중첩 된 속성의 값을 두 단계 낮추고 있지만 개체를 ​​가져 오는 것은 대상 개체 오류가 아닙니다. 유형이 지정된 OBJ는 다음과 같이 보일 것이다 : 어떤 통찰력을 크게 감상 할 수중첩 된 속성을 사용한 리플렉션

var _review = new Review() { .... }; 
var docProp = project.EnvironmentalAssessment.GetType().GetProperty(techStudy.DocumentProperty); 
    var docType = docProp.PropertyType; 
    var reviewProp = docType.GetProperty("Review"); 
    var reviewType = reviewProp.GetType(); 

project.EnvironmentalAssessment 
     .GetType() 
     .GetProperty(techStudy.DocumentProperty) 
     .PropertyType 
     .GetProperty("Review") 
     .SetValue(reviewProp, _review, null); 

project.EnvironmentalAessment.SomeDocument.Review. 감사!

+0

나는 당신이 얻고있는 오류를 나열 할 때 오타가 있다고 생각합니다. 그것을 확인하고 오류의 정확한 텍스트로 질문을 업데이트 할 수 있습니까? –

답변

1
project.EnvironmentalAssessment 
      .GetType() 
      .GetProperty("SomeDocument") 
      .PropertyType 
      .GetProperty("Review") 
      .SetValue(project.EnvironmentalAssessment.SomeDocument, _review, null); 

아니면 문서 속성의 이름을 모르는 경우 :

var docProp = project.EnvironmentalAssessment 
      .GetType() 
      .GetProperty(techStudy.DocumentProperty); 

docProp.PropertyType.GetProperty("Review") 
      .SetValue(docProp.GetValue(project.EnvironmentalAssessment), _review, null); 
1

또한 쉽게 만들 것이다,이 문제를 해결하기 위해 동적 입력을 사용할 수 있습니다. 리플렉션을 사용하는 것보다 성능 측면에서 더 효율적인 지 모르겠습니다.

dynamic project = ...; 
var review = new Review() { .... }; 
project.EnvironmentalAessment.SomeDocument.Review = review; 
관련 문제