下午好,我要做的是从一个表中设置一个对象列表的属性,其中两个用于表,一个 foreach 用于对象的属性。我坚持如何将值分配给属性。
/*recorre las filas*/
for (var j = 0; j < dt.Rows.Count; j++)
{
var campo = new Campo();
/*se para en cada fila y recorre las columnas*/
for (var i = 0; i < dt.Columns.Count; i++)
{
var nombreCampo = dt.Columns[i].Caption;
/*recorro las propiedades del objeto campo
* y cuando nombreCampo==propertyInfo.Name
* le asigno el valor de la celda segun cordenadas*/
foreach (PropertyInfo propertyInfo in campo.GetType().GetProperties())
{
if (propertyInfo.Name == nombreCampo)
{
propertyInfo.SetValue( Convert.ToString(dt.Rows[j][i]));
}
}
}
}
如果我们分析属性
PropertyInfo.SetValue 方法
你会看到这需要两个参数,所以它应该是
对于每一行,都需要创建一个 Field 类的实例并将其保存在一个列表中,否则在每次迭代中您总是会丢失该对象。
这是第一点。现在,要设置属性的值,您需要在第一个参数中指明哪个对象,而第二个参数中的值。
如果您还想转换为属性类型,您可以执行以下操作