zoukankan      html  css  js  c++  java
  • 动态加载DLL中的窗体

     private void AssemblyFrm(string DllPath,string Formname)
            
    {
                
    try
                
    {
                    Assembly MyAssembly 
    = Assembly.LoadFrom(DllPath);
                    Type[] MyTypes 
    = MyAssembly.GetTypes();//可以去掉
                    Type MyType = MyAssembly.GetType(Formname);
                    
    object MyObj = MyAssembly.CreateInstance(MyType.FullName);                

                    OpenedFrm((Form)MyObj);
                }

                
    catch (Exception exx)
                
    {
                    MessageBox.Show(exx.Message);
                }

            }

    system.reflecton.assembly 类型提供了下面三种方法:

    1.   Load 方法:极力推荐的一种方法,Load 方法带有一个程序集标志并载入它,Load 将引起CLR把策略应用到程序集上,先后在全局程序集缓冲区,应用程序基目录和私有路径下面查找该程序集,如果找不到该程序集系统抛出异常

    2.   LoadFrom 方法:传递一个程序集文件的路径名(包括扩展名),CLR会载入您指定的这个程序集,传递的这个参数不能包含任何关于版本号的信息,区域性,和公钥信息,如果在指定路径找不到程序集抛出异常。

    3.   LoadWithPartialName:永远不要使用这个方法,因为应用程序不能确定再在载入的程序集的版本。该方法的唯一用途是帮助那些在.Net框架的测试环节使用.net 框架提供的某种行为的客户,这个方法将最终被抛弃不用。

    注意:system.AppDomain 也提供了一种Load 方法,他和Assembly的静态Load 方法不一样,AppDomain的load 方法是一种实例方法,返回的是一个对程序集的引用,Assembly的静态Load 方发将程序集按值封装发回给发出调用的AppDomain.尽量避免使用AppDomain的load 方法.




  • 相关阅读:
    Tomcat学习总结(12)—— Tomcat集群配置
    Tomcat学习总结(11)——Linux下的Tomcat安全优化
    Tomcat学习总结(10)——Tomcat多实例冗余部署
    Tomcat学习总结(9)——Apache Tomcat 8新特性
    Tomcat学习总结(8)——Tomcat+Nginx集群解决均衡负载及生产环境热部署
    Tomcat学习总结(7)——Tomcat与Jetty比较
    C# ORM框架
    C# 模拟windows文件名称排序(使用windows自带dll)
    C#递归删除进程及其子进程
    python 下划线转驼峰
  • 原文地址:https://www.cnblogs.com/zhahost/p/1212397.html
Copyright © 2011-2022 走看看