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

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


每个AddIn插件由Codon和Conditional组成。如下图:
AddIn插件体系<AddIn name        = "SharpDevelop Core"
AddIn插件体系       author      
= "Mike"
AddIn插件体系       copyright   
= "GPL"
AddIn插件体系       url         
= "http://www.icsharpcode.net"
AddIn插件体系       description 
= "NCvs core module"
AddIn插件体系       version     
= "1.0.0">
AddIn插件体系
AddIn插件体系    
<Runtime>
AddIn插件体系        
<Import assembly="SharpDevelop.Base.dll"/>
AddIn插件体系        
<Import assembly="CSharpParser.dll"/>
AddIn插件体系    
</Runtime>
AddIn插件体系
AddIn插件体系    
<Extension path = "/SharpDevelop/Workbench/Ambiences">
AddIn插件体系        
<Class id    = "Net"
AddIn插件体系               
class = "ICSharpCode.SharpDevelop.Services.NetAmbience"/>
AddIn插件体系        
<Class id    = "CSharp"
AddIn插件体系               
class = "ICSharpCode.SharpDevelop.Services.CSharpAmbience"/>
AddIn插件体系        
<Class id    = "VB.NET"
AddIn插件体系               
class = "ICSharpCode.SharpDevelop.Services.VBAmbience"/>
AddIn插件体系    
</Extension>
AddIn插件体系
</AddIn>

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


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


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

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



相关文章:

  • 2021-12-26
  • 2022-12-23
  • 2021-10-20
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-10
  • 2021-09-27
猜你喜欢
  • 2021-09-02
  • 2021-11-12
  • 2022-01-03
  • 2022-12-23
  • 2021-11-18
  • 2021-09-10
  • 2022-12-23
相关资源
相似解决方案