刚开始学习反思,我有很多问题。我想强制转换以找到属性类型然后设置它们。所以我想转换为这些属性类型。
protected override object Load(SqlDataReader dr)
{
object item = Activator.CreateInstance(klass);
foreach (var p in klass.GetProperties())
{
MethodInfo pSet = p.GetSetMethod();
Type pType= p.PropertyType;
object setParam = dr[p.Name];
object[] paramArray = (object[])Array.CreateInstance(pType, 1);
paramArray[0] = setParam;
pSet.Invoke(item, paramArray);
}
return item;
}
答案 0 :(得分:1)
正如他们所说,你需要添加你的错误,但从我看到你有两个问题:
您使用klass
作为“类型”而不是typeof(klass)
您尝试将整个数组转换为新类型 - 这可以使用Array.ConvertAll
解决...但更简单的方法是使用:object[] paramArray = new object[1]
初始化常规数组。