如何使用反射和访问类方法实例化一个类(无接口)

时间:2014-05-14 02:54:54

标签: c# c#-4.0 interface system.reflection

我有一个包含3个项目的C#解决方案。

  1. Windows表单应用程序
  2. Windows库模块1(frmSearch,frmDetail)
  3. Windows库模块2(frmSearch,frmDetail)
  4. 模块1和模块2各有两种形式(如上所示)。所以我想要做的是从模块2获取Module1.frmDetail,然后实例化该类,然后访问其构造函数,以便我可以传递参数。

    问题是我没有Module1.frmDetail的界面(不知道我是否需要它),这是我在Module2.frmSearch中的实际代码:

    // Use Reflection to load Module1.frmDetail
    if(System.Reflection.Assembly.GetEntryAssembly() != null)
    {
      System.Reflection.Assembly a = System.Reflection.Assembly.Load("Module1.frmDetail");
      if(a != null)
      {
        System.Type type = a.GetType("Module1.frmDetail");
        var frm = Activator.CreateInstance(type);
    
        // here i want to pass a parameter to the constructor???
    
      }
    }
    

    关于如何做到这一点的任何线索?

1 个答案:

答案 0 :(得分:1)

Activator.CreateInstance的重载会根据您传递的参数选择构造函数进行调用。