如何在.net中使用反射通过构造函数创建对象后调用对象上的特定方法

本文关键字:对象 调用 创建对象 方法 构造函数 net 反射 | 更新日期: 2023-09-27 17:53:43

我有一个WPF应用程序,我想使用:

Assembly.LoadFrom

它工作正常,但在此之后,我试图调用它的默认构造函数:

LayerView.MainWindow();

然后,在创建的实例上调用Show方法。

我试着使用:

assembly.GetTypes();

遍历它们,然后当我找到正确的类型LayerView.MainWindow时,然后调用:

c.getConstructors ();

循环通过它们,当我找到正确的ctor时,调用:

ctor.Invoke (null);

,但不确定它是否工作,因为创建实例后,什么都不可见。我必须调用Show方法,这就是我卡住的地方。我不知道如何访问创建的实例。

这也是最好的方法吗?通过这些循环来找到正确的一个似乎相当笨拙。也许使用Linq可以做得更好?

如何在.net中使用反射通过构造函数创建对象后调用对象上的特定方法

尝试将ctor.Invoke(null)的结果转换为您期望的对象类型。这里有一个例子(注意:我不确定你调用的构造函数是什么,所以你需要弄清楚要把它转换成什么类型,如果它不是LayerView):

var view = (LayerView)ctor.Invoke(null);
view.Show();
http://msdn.microsoft.com/en-us/library/6ycw1y17.aspx

ConstructorInfoInvoke方法返回object引用,因此必须将其强制转换为您期望的类型。