具有嵌套属性的C#反射
尝试使用反射将嵌套属性的值向下设置两级,但获取对象不会导致目标对象错误。键入的obj如下所示: project.EnvironmentalAssessment.SomeDocument.Review具有嵌套属性的C#反射,c#,reflection,C#,Reflection,尝试使用反射将嵌套属性的值向下设置两级,但获取对象不会导致目标对象错误。键入的obj如下所示: project.EnvironmentalAssessment.SomeDocument.Review var _review = new Review() { .... }; var docProp = project.EnvironmentalAssessment.GetType().GetProperty(techStudy.DocumentProperty); var docType
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;
我认为你在列出你所遇到的错误时犯了一个错误。你能检查一下并用错误的确切文本更新问题吗?