2012.6.10 反射,插件制做

对外接口:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 对外接口
{
    public interface Ijiekou
    {
        string Name
        {
           
            get;
        }
        void Jiekou(TextBox textbox);
        
    }
}
主程序:
string exppath=Path.GetDirectoryName( Assembly.GetExecutingAssembly().Location);
            string path=Path.Combine(exppath,"plugins");

            //1.遍历plugins下的Dll文件
            string[] files = Directory.GetFiles(path, "*.dll");

            foreach (string item in files)
            {
                //2.加载反射
                Assembly asm=null;
                try
                {
                    asm = Assembly.LoadFile(item);
                }
                catch (Exception ex)
                { 
                
                }
                if (asm != null)
                {
                    //3.查找能外部访问的对像
                    Type[] types = asm.GetExportedTypes();
                   
                    //得到接品的类型
                    Type type = typeof(Ijiekou);
                    foreach (Type item1 in types)
                    {
                      //  MessageBox.Show(item1.Name);
                        //判断item1实现了type接口,并要以实例化
                        if (type.IsAssignableFrom(item1) && !item1.IsAbstract)
                        {
                          
                            //创造对像
                            Ijiekou Ijk = (Ijiekou)Activator.CreateInstance(item1);
                            ToolStripItem ts = this.工具栏ToolStripMenuItem.DropDownItems.Add(Ijk.Name);
                            ts.Tag = Ijk;
                            ts.Click += new EventHandler(ts_Click);

                        }
                    }
                }

            }
插件制做

using System; using System.Collections.Generic; using System.Linq; using System.Text; using 对外接口; using System.Windows.Forms; namespace FontSize {     public class Font:Ijiekou     {

        public string Name         {             get { return "变成大写"; }         }

        public void Jiekou(TextBox textbox)         {             textbox.Text = textbox.Text.ToUpper();         }     } }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值