如何使用反射添加到集合 - 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);添加新标题。