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