具有嵌套属性的C#反射

具有嵌套属性的C#反射,c#,reflection,C#,Reflection,尝试使用反射将嵌套属性的值向下设置两级,但获取对象不会导致目标对象错误。键入的obj如下所示: project.EnvironmentalAssessment.SomeDocument.Review var _review = new Review() { .... }; var docProp = project.EnvironmentalAssessment.GetType().GetProperty(techStudy.DocumentProperty); var docType

尝试使用反射将嵌套属性的值向下设置两级,但获取对象不会导致目标对象错误。键入的obj如下所示: project.EnvironmentalAssessment.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);
如有任何见解,将不胜感激。谢谢

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

您还可以使用动态类型来解决这个问题,这将使问题变得更简单。我不知道它在性能方面是否比使用反射更有效

dynamic project = ...;
var review = new Review() { .... };
project.EnvironmentalAessment.SomeDocument.Review = review;

我认为你在列出你所遇到的错误时犯了一个错误。你能检查一下并用错误的确切文本更新问题吗?