gpt4 book ai didi

c# - PropertyInfo.SetValue 对象与目标类型不匹配

转载 作者:行者123 更新时间:2023-11-30 16:26:13 30 4
gpt4 key购买 nike

我遇到了与 this one 类似的错误,但不幸的是不是同样简单的解决方案。这是代码:

public virtual void MapObject(T obj, IViewModel<T> viewModel, ITPSDataAccess dataAccess)
{
var objProps = obj.GetType().GetProperties();
var dtoProps = viewModel.GetType().GetProperties();
foreach (var dtoProp in dtoProps)
{
var objProp = dtoProps.SingleOrDefault(x => x.Name == dtoProp.Name);
if (objProp != null)
{
var dtoVal = dtoProp.GetValue(viewModel, null);
objProp.SetValue(obj, dtoVal, null); // ERROR HERE
}
}
...
}

错误发生在指示的位置,指出“对象与目标类型不匹配”。看起来我正在传递要设置的正确对象 - 因此我无法解决问题。

我也尝试听取 this solution 的建议,并检查我试图设置的引发异常的属性类型 - 所讨论的属性是一个字符串,并且 setter 似乎没有被破坏,因为它在正常的非反射环境下工作。

最佳答案

错误似乎在这里:

var objProp = dtoProps.SingleOrDefault(x => x.Name == dtoProp.Name);

我想你的意思是:

var objProp = objProps.SingleOrDefault(x => x.Name == dtoProp.Name); 

关于c# - PropertyInfo.SetValue 对象与目标类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9059172/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com