0

尝试使用反射将嵌套属性的值设置为两个级别但正在获取对象并不会导致目标对象错误。类型化的 obj 看起来像这样:project.EnvironmentalAessment.SomeDocument.Review

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);

任何见解将不胜感激。谢谢!

4

2 回答 2

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);
于 2013-05-03T14:10:37.880 回答
1

你也可以使用动态类型来解决这个问题,这样会更容易。我不知道它在性能方面是否比使用反射更有效。

dynamic project = ...;
var review = new Review() { .... };
project.EnvironmentalAessment.SomeDocument.Review = review;
于 2013-05-03T14:24:22.987 回答