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 方法.




  • 相关阅读:
    Codeforces 845E Fire in the City 线段树
    Codeforces 542D Superhero's Job dp (看题解)
    Codeforces 797F Mice and Holes dp
    Codeforces 408D Parcels dp (看题解)
    Codeforces 464D World of Darkraft
    Codeforces 215E Periodical Numbers 容斥原理
    Codeforces 285E Positions in Permutations dp + 容斥原理
    Codeforces 875E Delivery Club dp
    Codeforces 888F Connecting Vertices 区间dp (看题解)
    Codeforces 946F Fibonacci String Subsequences dp (看题解)
  • 原文地址:https://www.cnblogs.com/zhahost/p/1212397.html
Copyright © 2011-2022 走看看