反射的方法操作記事本添加外掛程式

來源:互聯網
上載者:User

標籤:

本文主要講的是通過反射動態擷取外掛程式。

 

首先所有的外掛程式必須遵守規範,這個規範是一個介面,定義如下:

1  public interface IEditPlus//interface一定要加public,否則外部無法引用2     {3         string Name { get; }//外掛程式的名字4         void ChangeString(TextBox tb);//改變字串的方法5     }

主視窗的介面

主要的思路是尋找/debug/lib檔案夾下的所有的.dll檔案,通過反射的方法對其進行操作。(在菜單編輯下添加子功能表)
 1   private void Form1_Load(object sender, EventArgs e) 2         { 3             //搜尋/bin/*.dll 4             //擷取當前程式集 5             Assembly ass = Assembly.GetExecutingAssembly(); 6             string dirPath = Path.Combine(Path.GetDirectoryName(ass.Location), "lib"); 7             string[] filePaths = Directory.GetFiles(dirPath, "*.dll");//在當前程式集的檔案夾中搜尋所有的dll檔案 8             foreach (var filePath in filePaths) 9             {10                 Assembly assdll = Assembly.LoadFile(filePath);11                 Type[] tps = assdll.GetTypes();12                 foreach (Type tp in tps)13                 {14                     if (typeof(IEditPlus).IsAssignableFrom(tp) && !tp.IsAbstract)15                     {16                         IEditPlus ep = (IEditPlus)Activator.CreateInstance(tp);//擷取對象轉換為介面對象17                         ToolStripItem tsi = tms.DropDownItems.Add(ep.Name);//為編輯菜單載入子功能表18                         tsi.Tag = ep;//將這個對象作為tsi的Tag儲存19                         tsi.Click += tsi_Click;//為這個子列表添加單擊事件20                     }21                 }22             }23         }24         void tsi_Click(object sender, EventArgs e)25         {26             ToolStripItem tsi = sender as ToolStripItem;//將sender顯示轉換為toolstripitem27             if (tsi!=null)//要判斷下tsi不為null,因為sender是一個接受的對象28             {29                 //在事件中要操作IEditPlus的ChangeString方法,所以要從tag中取出30                 IEditPlus ep = tsi.Tag as IEditPlus;31                 ep.ChangeString(textBox1);32             }33          34         }

小寫轉大寫的dll檔案代碼---將產生的dll代碼放在主程式的/debug/lib檔案下

 1 public class 小寫轉大寫:IEditPlus 2     { 3         public void ChangeString(System.Windows.Forms.TextBox tb) 4         { 5             tb.Text = tb.Text.ToUpper(); 6         } 7         public string Name 8         { 9             get { return "小寫轉大寫"; }10         }11     }

改變字型的dll代碼---將產生的dll代碼放在主程式的/debug/lib檔案下

先添加一個表單,介面

添加類的代碼:

1 public void ChangeString(System.Windows.Forms.TextBox tb)2         {3             FontFm ff = new FontFm(tb);4             ff.ShowDialog();5         }6         public string Name7         {8             get { return "字型"; }9         }

表單的代碼:

 1  public FontFm() 2         { 3             InitializeComponent(); 4         } 5         public FontFm(TextBox tb):this() 6         { 7            this._tb = tb;  8         } 9         private TextBox _tb;//要操作TextBox tb添加欄位和建構函式10         private void button1_Click(object sender, EventArgs e)11         {12             _tb.Font = new Font(cbmFont.Text, float.Parse(cbmSize.Text));//改變字型13             this.Close();//關閉表單14         }

 

我自己覺得,反射和介面一起用,棒棒噠!!!

 

反射的方法操作記事本添加外掛程式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.