天天看点

SharpDevelop学习笔记--什么是Addin

像这样根结点是addin的一个xml文件就是addin

SharpDevelop学习笔记--什么是Addin

<addin name = "typed collection wizard"

SharpDevelop学习笔记--什么是Addin

  author = "mike krueger"

SharpDevelop学习笔记--什么是Addin

  copyright = "gpl"

SharpDevelop学习笔记--什么是Addin

  url = "unknown"

SharpDevelop学习笔记--什么是Addin

  description = "creates a typed collection"

SharpDevelop学习笔记--什么是Addin

  version = "1.0.0">

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

  <runtime>

SharpDevelop学习笔记--什么是Addin

    <import assembly="typedcollectionwizard.dll"/>

SharpDevelop学习笔记--什么是Addin

  </runtime>

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

  <extension path = "/sharpdevelop/templates/file/typedcollection">

SharpDevelop学习笔记--什么是Addin

    <dialogpanel id = "collectiongenerator"

SharpDevelop学习笔记--什么是Addin

      label = "typed collection"

SharpDevelop学习笔记--什么是Addin

      class = "typedcollectiongenerator.typedcollectionwizardpanel"/>

SharpDevelop学习笔记--什么是Addin

  </extension>

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

</addin>

<runtime>中包含的是这个addin正常工作所需的程序集列表,

<extension>中包含的子结点,叫做一个codon 

addin类中分析addin文件的部分

SharpDevelop学习笔记--什么是Addin

public class addin

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

...{

SharpDevelop学习笔记--什么是Addin

    string name        = null;

SharpDevelop学习笔记--什么是Addin

    string author      = null;

SharpDevelop学习笔记--什么是Addin

    string copyright   = null;

SharpDevelop学习笔记--什么是Addin

    string url         = null;

SharpDevelop学习笔记--什么是Addin

    string description = null;

SharpDevelop学习笔记--什么是Addin

    string version     = null;

SharpDevelop学习笔记--什么是Addin

    string filename    = null;

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

    hashtable        runtimelibraries       = new hashtable();

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

    arraylist        extensions = new arraylist();

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

    /**//// <summary>

SharpDevelop学习笔记--什么是Addin

    /// returns a hashtable with the runtime libraries

SharpDevelop学习笔记--什么是Addin

    /// where the key is the assembly name and the value

SharpDevelop学习笔记--什么是Addin

    /// is the assembly object.

SharpDevelop学习笔记--什么是Addin

    /// </summary>

SharpDevelop学习笔记--什么是Addin

    public hashtable runtimelibraries 

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

    ...{

SharpDevelop学习笔记--什么是Addin

        get 

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

        ...{

SharpDevelop学习笔记--什么是Addin

            return runtimelibraries;

SharpDevelop学习笔记--什么是Addin

        }

SharpDevelop学习笔记--什么是Addin

    }

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

    /// returns a arraylist with all extensions defined by

SharpDevelop学习笔记--什么是Addin

    /// this addin.

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

    public arraylist extensions 

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

            return extensions;

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

    /// initializes this addin. it loads the xml definition in file

SharpDevelop学习笔记--什么是Addin

    /// filename.

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

    public void initialize(string filename)

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

        this.filename = filename;

SharpDevelop学习笔记--什么是Addin

        xmldocument doc = new xmldocument();

SharpDevelop学习笔记--什么是Addin

        doc.load(filename);

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

        try 

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

            name        = doc.selectsinglenode("addin/@name").value;

SharpDevelop学习笔记--什么是Addin

            author      = doc.selectsinglenode("addin/@author").value;

SharpDevelop学习笔记--什么是Addin

            copyright   = doc.selectsinglenode("addin/@copyright").value;

SharpDevelop学习笔记--什么是Addin

            url         = doc.selectsinglenode("addin/@url").value;

SharpDevelop学习笔记--什么是Addin

            description = doc.selectsinglenode("addin/@description").value;

SharpDevelop学习笔记--什么是Addin

            version     = doc.selectsinglenode("addin/@version").value;

SharpDevelop学习笔记--什么是Addin

        } 

SharpDevelop学习笔记--什么是Addin

        catch (exception) 

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

            throw new addinloadexception("这不是一个标准的addin文件,不包含,作者,版权,地址等信息");

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

        foreach (object o in doc.documentelement.childnodes) 

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

            if (!(o is xmlelement)) 

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

            ...{

SharpDevelop学习笔记--什么是Addin

                continue;

SharpDevelop学习笔记--什么是Addin

            }

SharpDevelop学习笔记--什么是Addin

            xmlelement curel = (xmlelement)o;

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

            switch (curel.name) 

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

                case "runtime"://动态地加入运行时支持库

SharpDevelop学习笔记--什么是Addin

                    addruntimelibraries(path.getdirectoryname(filename), curel);

SharpDevelop学习笔记--什么是Addin

                    break;

SharpDevelop学习笔记--什么是Addin

                case "extension"://加入extension

SharpDevelop学习笔记--什么是Addin

                    addextensions(curel);

SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin
SharpDevelop学习笔记--什么是Addin

}