日期:2011-07-08  浏览次数:21056 次

正式开始本文:在 .NET 框架中,将程序集加载至应用程序域的方法有几种。每种方法使用不同的类。

您可以使用下面的重载方法将程序集加载至应用程序域:

System.AppDomain 类包含几种重载的 Load 方法。尽管这些方法可用于将任何程序集成功地加载至当前的或新的应用程序域,但它们主要还是用于 COM 交互操作。您也可以使用 CreateInstance 方法加载程序集。

System.Reflection.Assembly 类包含两种静态重载方法:Load 和 LoadFrom。这两种方法因加载上下文而异。

简单例题:讲解了在一个.exe文件中调用另一个.exe文件的方法

using System;

namespace dy_loadAsse

{

     class testclass

     {

          [STAThread]

         static void Main(string[] args)

         {

              OutUse test=new OutUse();

               test.Output();

              Console.ReadLine();

         }

        

     }

     class OutUse

     {

         public  OutUse()

         {

         }

         public void Output()

         {

              Console.WriteLine("test dy load assembly");

         }

     }

}

以上编译成功。为dy_loadAsse.exe,执行显示:

test dy load assembly

放在与下面生成的loadexe.exe于同一目录下。

文件二:

using System;

using System.Reflection;

namespace Use_dy_Load_Assembly

{

     class LoadExe

     {

          [STAThread]

         static void Main(string[] args)

         {

              // Use the file name to load the assembly into the current application domain.

              Assembly a = Assembly.LoadFrom("dy_loadAsse.exe");

              Type [] types2 = a.GetTypes();

              foreach (Type t in types2)

              {

                   Console.WriteLine (t.FullName);

              }

              //Get the type to use.

              //Type myType = a.GetType("OutUse"); 这样写老是出错

              Type myType = a.GetType("dy_loadAsse.OutUse");

             Console.WriteLine (myType.FullName);

              //Get the method to call.

              MethodInfo mymethod = myType.GetMethod("Output");

//            //Create an instance.

    &nb