• 插件的简单原理


    using IExtendServices;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Reflection;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace 插件的简单原理
    {
        public class ExtendServices
        {
            private MenuStrip ms = null;
            private RichTextBox txt = null;
            public ExtendServices(MenuStrip ms, RichTextBox txt)
            {
                this.ms = ms;
                this.txt = txt;
            }
            public void Service()
            {
                string[] plugFilesPath = Directory.GetFiles(Path.Combine(Application.StartupPath, "plugs"), "*.dll");
    
                foreach (string itemPath in plugFilesPath)
                {
                    Assembly ass = Assembly.LoadFrom(itemPath);
                    //获取所有的公共类型
                    Type[] assTypes = ass.GetExportedTypes();
                    //自定义的接口类型
                    Type itype = typeof(IExtendService);
                    foreach (Type itemtype in assTypes)
                    {
                        if (itemtype.IsPublic && itype.IsAssignableFrom(itemtype) && !itemtype.IsAbstract&&!itemtype.IsInterface)
                        {
                            IExtendService service = (IExtendService)Activator.CreateInstance(itemtype);
                            ToolStripMenuItem editItem = (ToolStripMenuItem)ms.Items[1];
    
                            ToolStripItem seritem = editItem.DropDownItems.Add(service.Name);
                            seritem.Tag = service;
                            seritem.Click += SerItemMethod;
                        }
                    }
    
                }
            }
    
            private void SerItemMethod(object sender, EventArgs e)
            {
                ToolStripItem service = (ToolStripItem)sender;
                ((IExtendService)service.Tag).Service(txt);
            }
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace CNotePadPlugs
    {
        public class ToASCII:IExtendServices.IExtendService
        {
            public string Name
            {
                get { return "ToASCII"; }
            }
    
            public void Service(System.Windows.Forms.RichTextBox txt)
            {
    
                string all = txt.Text;
                string txtSelected = txt.SelectedText;
    
                if (txtSelected == "")
                    txtSelected = all;
                
                int index = txt.SelectionStart;//2
                if (index == all.Length)
                    index = 0;
                //0
                string start = all.Substring(0, index);//2
                //1
                string upper = all.Substring(index, txtSelected.Length);
                char[] chars = upper.ToCharArray();
                upper = "";
                foreach (char item in chars)
                {
                    upper += (int)item;
                }
                //2
                string end = txt.Text.Substring(index + txtSelected.Length);
    
                txt.Text = start + upper + end;    
    
            }
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace IExtendServices
    {
        public interface IExtendService
        {
            string Name
            {
                get;
            }
            void Service(System.Windows.Forms.RichTextBox txt);
        }
    }

    源文件:http://pan.baidu.com/s/1ntp0XxZ

  • 相关阅读:
    分数拆分
    thinkphp URL规则、URL伪静态、URL路由、URL重写、URL生成(十五)
    iOS_12_tableViewCell的删除更新_红楼梦
    关于0基础磁盘管理(gpt UEFI...)最好的一篇文章(来自gentoo linux)
    HDU 3564 Another LIS splay(水
    jsp表达式
    XML(四)dom4j解析XML
    Android学习笔记(十八)——使用意图筛选器和实现浏览网页(附源代码)
    Oracle企业管理框架
    em grid control网格控制
  • 原文地址:https://www.cnblogs.com/wjshan0808/p/3778518.html
Copyright © 2020-2023  润新知