如何在.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
可以做得更好?
尝试将ctor.Invoke(null)
的结果转换为您期望的对象类型。这里有一个例子(注意:我不确定你调用的构造函数是什么,所以你需要弄清楚要把它转换成什么类型,如果它不是LayerView):
var view = (LayerView)ctor.Invoke(null);
view.Show();
http://msdn.microsoft.com/en-us/library/6ycw1y17.aspx ConstructorInfo
的Invoke
方法返回object
引用,因此必须将其强制转换为您期望的类型。