PropertyInfo GetValue()对象与目标类型不匹配
我想读取T型的值
public virtual ActionResult Edit(TEditDTO editedDTO) { if (!ModelState.IsValid) return View(editedDTO); var t = editedDTO.GetType(); var prop = t.GetProperty("Id") ; var Id = prop.GetValue(t); // get exception }
但得到
对象与目标类型不匹配
您应该将TEditDTO
的实例TEditDTO
给GetValue
方法而不是类型实例。
var Id = prop.GetValue(editedDTO);
试试这个,
var Id = prop.GetValue(editedDTO, null);
PropertyInfo.GetValue方法接受要为其读取值的类型的实例作为第一个参数。 如果使用索引器,还需要为GetValue指定一个额外的数组参数。 由于两个参数都是必需的,因此在读取普通属性时需要为第二个参数传递null。 在您的示例中,您传递的是Type实例而不是TEditDTO实例。 使用下面的代码。
var Id = prop.GetValue(editedDTO, null);
试试这个:
public virtual ActionResult Edit(TEditDTO editedDTO) { if (!ModelState.IsValid) return View(editedDTO); PropertyInfo prop = typeof(editedDTO).GetProperty("Id") ; Object Id = prop.GetValue(editedDTO); }