加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 尝试使用SetValue时,Object与目标类型不匹配

发布时间:2020-12-15 05:38:24 所属栏目:百科 来源:网络整理
导读:public class ConflictSaver{ private readonly IEnumerableCommonJobDataInfo _conflictingJobData; private readonly DataAccessDataContext _dc; public ConflictSaver(IEnumerableCommonJobDataInfo conflictingJobData,DataAccessDataContext dc) { _co
public class ConflictSaver
{
    private readonly IEnumerable<CommonJobDataInfo> _conflictingJobData;
    private readonly DataAccessDataContext _dc;

    public ConflictSaver(IEnumerable<CommonJobDataInfo> conflictingJobData,DataAccessDataContext dc)
    {
        _conflictingJobData = conflictingJobData;
        _dc = dc;
    }

    public void Save()
    {
        foreach (var data in _conflictingJobData)
        {
            var type = data.ClientBaSEObject.GetType();
            var formattedProperty = data.Property.Trim('.').ToUpper();
            foreach (var property in type.GetProperties())
            {
                var currentProperty = data.ClientBaSEObject.GetType().GetProperties().First(t => t.Name.Trim() == property.Name.Trim());

                if(currentProperty.Name.ToUpper()== formattedProperty)
                {
                    if (data.UseServerValue)
                        currentProperty.SetValue(currentProperty,data.ServerValue,null);
                    else
                        currentProperty.SetValue(currentProperty,data.ClientValue,null);
                }
            }

        }
    }
}

当我尝试调用SetValue()时,我得到Object与Save()函数中的目标类型不匹配.我很反思.

解决方法

看起来你使用了错误的重载,并传递了一个错误的对象:
if (data.UseServerValue)
    currentProperty.SetValue(data.ClientBaSEObject,data.ServerValue);
else
    currentProperty.SetValue(data.ClientBaSEObject,data.ClientValue);

该属性属于data.ClientBaSEObject,因此它应该是调用目标.该属性没有idexer,所以if you are on .NET 4.5 or later,你可以完全跳过第三个参数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读