C# 动态设置属性值

C# 动态设置属性值,c#,properties,C#,Properties,我正在使用数据透视网格(DevExpress)。我想在for循环中设置AppearancePrint属性设置 如何将变量类型用于下例中的单元格等属性 所以不是 grid.AppearancePrint.Cell.BackColor = Color.White; grid.AppearancePrint.Cell.BackColor2 = Color.LightBlue; 我想这样做: //datarow example <PrintAppearance Type="Cell" Font=

我正在使用数据透视网格(DevExpress)。我想在for循环中设置AppearancePrint属性设置

如何将变量类型用于下例中的单元格等属性

所以不是

grid.AppearancePrint.Cell.BackColor = Color.White;
grid.AppearancePrint.Cell.BackColor2 = Color.LightBlue;
我想这样做:

//datarow example <PrintAppearance Type="Cell" Font="Tahoma,8,Regular" BackColor="White" BackColor2="Light Grey"/>

foreach (DataRow dr in appearances)          
{
   string type = dr["Type"].ToString();
   grid.AppearancePrint.[type].BackColor = Color.FromName(dr["BackColor"].ToString());
   grid.AppearancePrint.[type].BackColor2 = Color.FromName(dr["BackColor2"].ToString());
}
//数据行示例
foreach(外观中的数据行dr)
{
字符串类型=dr[“type”].ToString();
grid.AppearancePrint.[type].BackColor=Color.FromName(dr[“BackColor”].ToString());
grid.AppearancePrint.[type].BackColor2=Color.FromName(dr[“BackColor2”].ToString());
}

我不熟悉您的确切问题,但乍一看,您似乎需要使用反射,因为在运行时之前您不知道类型-如果您不熟悉反射,它将允许您检查对象(更重要的是它的属性)


请参阅以获取可能的解决方案,这本质上是一种脚本解析形式,您需要使用反射来完成此操作。例如:

foreach (DataRow dr in appearances) {
   string type = dr["Type"].ToString();

   PropertyInfo propertyForType = grid.AppearancePrint.GetType().GetProperty(type);
   object objectForProperty = propertyForType.GetValue(grid.AppearancePrint, null);

   PropertyInfo propertyForBackColor = objectForProperty.GetType().GetProperty("BackColor");
   PropertyInfo propertyForBackColor2 = objectForProperty.GetType().GetProperty("BackColor2");

   propertyForBackColor.SetValue(objectForProperty, Color.FromName(dr["BackColor"].ToString()), null);
   propertyForBackColor2.SetValue(objectForProperty, Color.FromName(dr["BackColor2"].ToString()), null);
}

谢谢你的链接。我确实想试试这个Type=target.GetType();PropertyInfo prop=type.GetProperty(“propertyName”);prop.SetValue(目标,propertyValue,null);同时,我找到了另一种方法来实现这一点,而不使用reflection DevExpress.Utils.AppearanceObject ao=grid.AppearancePrint.GetAppearance(type);ao.Options.UseFont=true;ao.BackColor=Color.FromName(dr[“BackColor”].ToString());问候房协