【发布时间】:2016-05-27 08:03:02
【问题描述】:
当我尝试设置子类的属性时,我收到此错误:
其他信息: Property set method not found.
任何人都可以对此有所了解吗? - 显然他们有二传手,见下面的图片
类:
public class Test
{
public string Name {get;set}
public LetterGrade Grade {get;set;}
}
pulic class LetterGrade
{
public string Name {get;set;}
public double GradePercentage {Get;set;}
}
用途:
var dbModel = context.Test.FirstOrDefault(w=>w.ID == ID)
this.Bind(dbModel);
这就是我一直在调用孩子的方式(很好)但宁愿只进行 1 次调用(递归) 一些更复杂的对象会有孩子的孩子等等
this.LetterGrade.Bind(dbModel.LetterGrade);
【问题讨论】:
-
是否引发异常的属性有
setter? -
你为什么不使用像 AutoMapper 这样的库呢?
-
@raderick 我听说自动映射器在将副本 1 对象移动到另一个对象的开销方面有点慢。
-
@haim770 从我所看到的,从这段代码来看,没有。但是,我的主类上的一个属性是否作为目标传递给上述函数并且它们的属性是公共的?我将在一些类中进行编辑以供参考。
-
嗯,在您的通用代码中,您不应该将属性绑定到属性 (
destProperty.Bind(sourceProperty)),而是将两个属性的值相互映射,如果它为空,则创建对象的新实例目的地财产。或者您应该使用属性值而不进行深度复制,具体取决于您尝试实现的逻辑。
标签: c# entity-framework recursion reflection viewmodel