如何使用反射添加到集合 - C#
How to add to collection using reflection - C#
我是 C# 的新手,具体来说是反思,我正在尝试解决一个非常具体的问题。我想使用反射实现以下代码(因为在某些机器中 System.Windows.Forms.DataVisualization.dlls 可能不存在,在这种情况下我将跳过生成图表)。
Chart chart1 = new Chart();
string chartTitle = "Chart Title";
chart1.Titles.Add(chartTitle);
我想出了如何加载一个 dll,获取它的 class 类型,get/set 它的 static/non-static 属性,使用构造函数通过反射创建对象等。但是我对如何在集合上调用 "add" 方法一无所知。
比如说,我通过反射有对象 Chart1 和 chartTitle,我如何使用反射实现第三行代码。
感谢您的帮助。提前致谢。
青苹果
如果您已经拥有 object chart1
实例,那么您可以使用
object titles = typeof(chart1).GetProperty("Titles").GetValue(chart1);
或
object titles = chart1.GetType().GetProperty("Titles").GetValue(chart1);
获取 chart1.Titles
实例。
然后使用titles.GetMethod("Add").Invoke(titles, chartTitle);
添加新标题。
我是 C# 的新手,具体来说是反思,我正在尝试解决一个非常具体的问题。我想使用反射实现以下代码(因为在某些机器中 System.Windows.Forms.DataVisualization.dlls 可能不存在,在这种情况下我将跳过生成图表)。
Chart chart1 = new Chart();
string chartTitle = "Chart Title";
chart1.Titles.Add(chartTitle);
我想出了如何加载一个 dll,获取它的 class 类型,get/set 它的 static/non-static 属性,使用构造函数通过反射创建对象等。但是我对如何在集合上调用 "add" 方法一无所知。 比如说,我通过反射有对象 Chart1 和 chartTitle,我如何使用反射实现第三行代码。
感谢您的帮助。提前致谢。
青苹果
如果您已经拥有 object chart1
实例,那么您可以使用
object titles = typeof(chart1).GetProperty("Titles").GetValue(chart1);
或
object titles = chart1.GetType().GetProperty("Titles").GetValue(chart1);
获取 chart1.Titles
实例。
然后使用titles.GetMethod("Add").Invoke(titles, chartTitle);
添加新标题。