Assembly tempAssembly = Assembly.LoadFrom("myEXE.exe"); 
Form frm1 = (Form) tempAssembly.CreateInstance("FormClassName");
frm1.Show(); see
http://www.syncfusion.com/FAQ/WinForms/FAQ_c95c.asp?print=729

解决方案 »

  1.   

    谢谢!!
    调用别的类?比如要调用下面的DataSetPortal类的GetDataSet方法
    public class DataSetPortal
    {
    public DataSetPortal()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    } public static DataSet GetDataSet( string date )
    {
    return new DataSet();
    }
    }
      

  2.   

    try something likeType mm = tempAssembly.GetType("DataSetPortal");
    object[] arguments = new object[1]{"YourStringDateParameter"};
    object retVal =
        mm.InvokeMember("GetDataSet",
        BindingFlags.Default | 
        BindingFlags.InvokeMethod,
        null,
        null,
        arguments);DataSet ds = (DataSet)retVal;see
    http://www.dotnetextreme.com/code/DynaInvoke.asp
      

  3.   

    //动态加载的模块
    using System;
    using System.Data;namespace Module
    {
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    public class DataSetPortal
    {
    public DataSetPortal()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    } public static DataSet GetDataSet()
    {
    return new DataSet();
    }
    }
    }//调用模块
    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.Reflection;namespace DynamicLoadAssembly
    {
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
    /// <summary>
    /// Required designer variable.
    /// </summary>
    private System.ComponentModel.Container components = null; public Form1()
    {
    //
    // Required for Windows Form Designer support
    //
    InitializeComponent(); System.Reflection.Assembly Asm=System.Reflection.Assembly.LoadFrom("Module.dll");
    Type typeDataSetPortal = Asm.GetType("Module.DataSetPortal");
    object retVal =
    typeDataSetPortal.InvokeMember("GetDataSet",
    BindingFlags.Default | 
    BindingFlags.InvokeMethod,
    null,
    null,
    null);
    DataSet ds = (DataSet)retVal; //
    // TODO: Add any constructor code after InitializeComponent call
    //
    } /// <summary>
    /// Clean up any resources being used.
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if (components != null) 
    {
    components.Dispose();
    }
    }
    base.Dispose( disposing );
    } #region Windows Form Designer generated code
    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    private void InitializeComponent()
    {
    this.components = new System.ComponentModel.Container();
    this.Size = new System.Drawing.Size(300,300);
    this.Text = "Form1";
    }
    #endregion /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main() 
    {
    Application.Run(new Form1());
    }
    }
    }