文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>c# 反射---简单小例子

c# 反射---简单小例子

时间:2011-03-18  来源:server126

/////接口

using System;
usingSystem.Text;

namespaceJiang.IForm
{
    /// <summary>
    ///反射要实现该接口
    /// </summary>
   public interfaceIForm
   {
        /// <summary>
        ///form test
       /// </summary>
       stringFormName
        { get; set; }
        /// <summary>
        ///Run appliction
       /// </summary>
       voidRun();
    }
}

以下是实现接口的类

using System;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using Jiang.IForm;

namespace RefLibraryUser
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Close();
        }
    }

    public class Progarm:IForm
    {
        private string formname;
         ///设置窗体名称
        public string FormName
        {
            get
            {
                return formname;
            }
            set
            {
                formname = value;
            }
        }
         ///运行程序
        public void Run()
        {
            Form1 f1 = new Form1();
            f1.Text = this.FormName;
            f1.Show();
        }
      
    }
}

///要反射的dll文件
           string files = Application.StartupPath + (@"\Plug-In\abc.RefLibraryUser.dll");
           ///加载dll文件
           Assembly assembly = Assembly.LoadFile(files);
           ////获取程序中的类型
           Type[] t = assembly.GetTypes();
           foreach (Type ty in t)
           {
               if (ty.GetInterface("IForm") != null)///检查是否实现IForm该接口
               {
                   /////创建实例
                   IForm f = (IForm)Activator.CreateInstance(ty);
                   f.FormName = "插件窗体";///设置反射程序中的名称
                   f.Run();//运行此反射程序
                   break;////为了提高运行效率(因为一个程序里我只有一个实现了这个接口,所以我找到一个就够了)。
               }
           }

主程序,反射dll文件

///要反射的dll文件
           stringfiles = Application.StartupPath + (@"\Plug-In\abc.RefLibraryUser.dll");
           ///加载dll文件
           Assemblyassembly = Assembly.LoadFile(files);
           ////获取程序中的类型
           Type[] t = assembly.GetTypes();
           foreach(Typety int)
           {
               if(ty.GetInterface("IForm") != null)///检查是否实现IForm该接口
               {
                   /////创建实例
                   IFormf = (IForm)Activator.CreateInstance(ty);
                   f.FormName = "插件窗体";///设置反射程序中的名称
                   f.Run();//运行此反射程序
                   break;////为了提高运行效率(因为一个程序里我只有一个实现了这个接口,所以我找到一个就够了)。
               }
           }

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载