zoukankan      html  css  js  c++  java
  • AddIn插件体系

    这套体系是由xml与相关类共同作用形成的。
    xml文件为:SharpDevelopCore.addin(搜索一下,这个文件是唯一的)
    相关类在:Core/AddIns

    在逻辑上,SharpDevelop有一棵插件树AddInTree,树上有很多节点AddInTreeNode,对外表现为SharpDevelopCore.addin这个xml文件。


    每个AddIn插件由Codon和Conditional组成。如下图:
    <AddIn name        = "SharpDevelop Core"
           author      
    = "Mike"
           copyright   
    = "GPL"
           url         
    = "http://www.icsharpcode.net"
           description 
    = "NCvs core module"
           version     
    = "1.0.0">

        
    <Runtime>
            
    <Import assembly="SharpDevelop.Base.dll"/>
            
    <Import assembly="CSharpParser.dll"/>
        
    </Runtime>

        
    <Extension path = "/SharpDevelop/Workbench/Ambiences">
            
    <Class id    = "Net"
                   
    class = "ICSharpCode.SharpDevelop.Services.NetAmbience"/>
            
    <Class id    = "CSharp"
                   
    class = "ICSharpCode.SharpDevelop.Services.CSharpAmbience"/>
            
    <Class id    = "VB.NET"
                   
    class = "ICSharpCode.SharpDevelop.Services.VBAmbience"/>
        
    </Extension>
    </AddIn>

    每个Extension节点就是一个Codon对象,在程序中抽象为ICodon:
                         


    ICodon的属性就是Xml中的实体映射,AbstractCodon抽象类提供了属性的实现(BulidItem()方法在最底层实现)


    BulidItem()方法很重要,签名为:
            public override object BuildItem(object owner, ArrayList subItems, ConditionFailedAction action)

    Codon的生成由CodonBuilder和CodonFactory协作完成。



  • 相关阅读:
    数据库版本管理工具flyway
    spring webapp的配置文件放置在项目外的方法
    logback
    linux as4 bind9 设置进程中的一些小效果
    设置/勾销Debian的屏保
    Linux内存:内存管理的天禀
    用YUM晋级CentOS体系中PHP和MySQL
    solaris的故事
    Solaris 的防火墙ipfilter设置
    mysql安置设置文件的成绩
  • 原文地址:https://www.cnblogs.com/Jax/p/829849.html
Copyright © 2011-2022 走看看