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,你可以完全跳过第三个参数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ruby – 如何使用File#flock对独占锁进行非阻塞请求?
- c# – 更改winforms应用程序的字体系列和大小
- XML基础+Java解析XML +几种解析方式的性能比较
- 如何用正则将多个空格看成一个空格结合spllit()方法将文本
- 通过XML设置屏幕方向(android:screenOrientation)详解
- ios – 使用UIViewControler和UITableView在UITabBarContro
- uboot 添加W25Q64
- ruby-on-rails – 在Rails中测试模型的最佳实践是什么?
- ruby-on-rails – Date.new为“11”返回未定义的方法`div’
- c# – 如何处理Rounding-TimeSpan?