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);
}
}
}
}
}
tôi nhận được đối tượng không khớp mục tiêu loại trong Save() chức năng khi tôi cố gắng gọi SetValue(). Tôi ngơ ngác trước sự phản chiếu.Đối tượng không phù hợp với loại mục tiêu khi cố gắng sử dụng SetValue
khi tôi biên dịch, nó nói "Không quá tải, mất 2 tham số". Tôi sẽ thử nó với null. –
@DJBurb Ah, tôi không nhận ra rằng quá tải 2-arg là .NET 4.5 chỉ! Quá tải với 'null' sẽ hoạt động. – dasblinkenlight
vâng, tôi đang sử dụng 4.0 –