プラグインの開発入門について.
3317 ワード
今では多くのソフトウェアがプラグインをサポートしているので、自分も小さなプラグインプログラムを作っています.
プラグインの開発に関する知識点は次のとおりです.メタデータ.C#中はTypeクラス eg:ChineseクラスのTypeを手に入れたい場合は、Chinese c(Chineseのオブジェクト)——』c.GetType();
2つ目はChineseクラスで入手可能---typeOf(Chinese)プラグインの開発を実現するには、まず一定の規範要求を指定しなければならない.インタフェースを指定する必要があります.
次に行う小さな例は、簡易手帳のプラグイン開発です.
まずインタフェースを定義します.
そして私たちのプラグインの開発を始めます.一般的には、プロジェクトの下にフォルダ名「addin」または「plug-in」を作成します.ここで前者を選択します.
一般的に、プログラムでクラスライブラリを使用するには、プロジェクトの参照に追加する必要があります.しかし、プラグインは私たちがプロジェクトを開発して「*.dll」を追加し、実行すると新しく追加されたプラグインが見えます.------ここでは反射機構を用いた.
以上の意味では、Addinsフォルダを見つけて「dll」という接尾辞のファイルを探します.次に、このフィルタリングされたファイルを巡り、深くフィルタリングします.
次に、カスタムプラグインを開発できます.自分でClassLibraryプロジェクトを作成します.
次にクラス(eg:class 1.cs)を作成し、最初に約束したルール(IEditor)を実現させます.
最後にコンパイルしてコンパイルしたdllファイルをAddinsフォルダの下に置きます.そしてカスタムプラグイン機能が見えてきますね...
プラグインの開発に関する知識点は次のとおりです.
2つ目はChineseクラスで入手可能---typeOf(Chinese)
次に行う小さな例は、簡易手帳のプラグイン開発です.
まずインタフェースを定義します.
public interface IEditor
{
string AddinName//
{
get;
}
void Execute(TextBox txtbox);//
}
そして私たちのプラグインの開発を始めます.一般的には、プロジェクトの下にフォルダ名「addin」または「plug-in」を作成します.ここで前者を選択します.
一般的に、プログラムでクラスライブラリを使用するには、プロジェクトの参照に追加する必要があります.しかし、プラグインは私たちがプロジェクトを開発して「*.dll」を追加し、実行すると新しく追加されたプラグインが見えます.------ここでは反射機構を用いた.
string addinsPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string filePath = Path.Combine(addinsPath, "Addins");
string[] files = Directory.GetFiles(filePath, "*.dll");
以上の意味では、Addinsフォルダを見つけて「dll」という接尾辞のファイルを探します.次に、このフィルタリングされたファイルを巡り、深くフィルタリングします.
foreach (var item in files)
{
try
{
Assembly asem = Assembly.LoadFile(item);// dll
Type[] typs = asem.GetExportedTypes();// dll
for (int i = 0; i < typs.Length; i++)
{
Type typIEditor = typeof(IEditor);
// typ[i] typIEditor , typ[i] 。
if (typIEditor.IsAssignableFrom(typs[i]) && !typs[i].IsAbstract)
{
// typ[i] 。 new 。
object obj = Activator.CreateInstance(typs[i]);
IEditor editor = obj as IEditor;
// , “ ”
ToolStripItem tsmi = tsmiTool.DropDownItems.Add(editor.AddinName);
tsmi.Click += new EventHandler(tsmi_Click);// , editor
tsmi.Tag = editor;// editor
}
}
}
catch (BadImageFormatException)
{
continue;
}
void tsmi_Click(object sender, EventArgs e)
{
ToolStripItem tsmi = sender as ToolStripItem;
if (tsmi != null)
{
IEditor editor = tsmi.Tag as IEditor;
editor.Execute(this.textBox1);
}
}
次に、カスタムプラグインを開発できます.自分でClassLibraryプロジェクトを作成します.
次にクラス(eg:class 1.cs)を作成し、最初に約束したルール(IEditor)を実現させます.
public class Class1 : IEditor
{
public string AddinName
{
get
{
return " ";// ” “
}
}
//
public void Execute(System.Windows.Forms.TextBox txtbox)
{
txtbox.Text = txtbox.Text.ToUpper();
}
}
最後にコンパイルしてコンパイルしたdllファイルをAddinsフォルダの下に置きます.そしてカスタムプラグイン機能が見えてきますね...