C#反射转换为变量类型

时间:2018-03-19 15:35:31

标签: c# .net reflection

刚开始学习反思,我有很多问题。我想强制转换以找到属性类型然后设置它们。所以我想转换为这些属性类型。

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;
        }

1 个答案:

答案 0 :(得分:1)

正如他们所说,你需要添加你的错误,但从我看到你有两个问题:

您使用klass作为“类型”而不是typeof(klass) 您尝试将整个数组转换为新类型 - 这可以使用Array.ConvertAll解决...但更简单的方法是使用:object[] paramArray = new object[1]初始化常规数组。

祝你好运