CodeGo.net>如何动态分配集合中的属性
作者:互联网
我从事C#工作.
foreach (DataGridViewRow item in dataGridView1.Rows)
{
if (Convert.ToBoolean( item.Cells[0].Value) == true)
{
foreach (DataGridViewColumn col in dataGridView1.Columns)
{
**class oclass=new class();
oclass.property = item.Cells[col.Name].Value.ToString();
Collection.add(oclass);**
}
}
}
在上面的语法中,我想动态填充类属性.我也将我的类添加到集合中.是否可以在C#中动态填充类属性?我的网格包含多个列.我的网格的列名与类属性名相同我想做下面的事情:
foreach (DataGridViewColumn col in dataGridView1.Columns)
{
**class oclass=new class();
oclass.col.Name= item.Cells[col.Name].Value.ToString();
Collection.add(oclass);**
}
提前致谢.
解决方法:
您可以使用PropertyInfo.SetValue()做到这一点.
在示例中,我添加了对所有功能的解释.
在此示例中,我使用了TestClass类.首先我得到类型.
var type = typeof(TestClass);
然后,我将建立一个包含所有列名的字典和一个PropertyInfo,它是对与该列同名的类的属性的引用.
var properties = new Dictionary<string, PropertyInfo>();
foreach (DataGridViewColumn col in dataGridView1.Columns)
{
properties.Add(col.Name, type.GetProperty(col.Name));
}
然后,对于每一行.
foreach (DataGridViewRow item in dataGridView1.Rows)
{
if (Convert.ToBoolean( item.Cells[0].Value) == true)
{
我创建一个TestClass的新实例.
var instance = new TestClass();
foreach (DataGridViewColumn col in dataGridView1.Columns)
{
我从字典中获取属性,并使用SetValue方法使用列中的值设置实例的值.但是,要做到这一点,我们必须首先确保类型正确.
object value = Convert.ChangeType(item.Cells[col.Name].Value, properties[col.Name].PropertyType);
properties[col.Name].SetValue(instance, value, null);
}
最后,我将实例添加到集合中.
Collection.Add(instance);
}
}
标签:c-3-0,asp-net,c 来源: https://codeday.me/bug/20191105/1996914.html