反射

作者在 2008-04-12 13:33:01 发布以下内容

如果你封装了一个DLL,你可以用引用的方法去调用它,这是肯定的!你也可通过反射的方法去调用它!

例如:

新建一个类库项目,命名为 DLLForm,这个类库里面你可以添加一个窗体,命名为 “MyForm”

在同一个解决方案里面添加一个应用程序,命名为MyApplication,并将其设为启动项

 

现在我们不直接引用DLLForm这个项目,而是通过反射来进行调用。

在窗体Form1中添加一个按钮事件,执行的代码如下

string[] arFile =

 System.IO.Directory.GetFiles(Application.StartupPath, "DLLForm.dll");

            for (int i = 0; i < arFile.Length; i++)

            {

                System.Reflection.Assembly assembly = System.Reflection.Assembly.LoadFrom(arFile[i]);

                foreach (Type type in assembly.GetTypes())

                {

                    object myForm = Activator.CreateInstance(type) as Form;

                    if (myForm != null)

                    {

                        ((Form)myForm).ShowDialog();

                        return;

                    }

                }

         }

结果如下:(记得运行前将DLLForm这个DLLMyApplication放在同一个目录下,否则你要使用绝对路径)

 

 

高级编程 | 阅读 1846 次
文章评论,共0条
游客请输入验证码
浏览24978次