SharpDevelop学习笔记--什么是codon,与codon的创建过程

原创 2007年09月28日 08:56:00

 codon只是一个xml文件(addin文件中)的一个节点,这个节点须有唯一的名字
以下是一个codon的创建过程,并不包括condtion

以下是调用的程序正常执行步骤的记录

public class Addin
...{
    
//从addin文件中分析出extension
    public void Initialize(string fileName)
    
...{
        
switch (curEl.Name) ...{
            
case "Runtime":
                AddRuntimeLibraries(Path.GetDirectoryName(fileName), curEl);
                
break;
            
case "Extension":
                AddExtensions(curEl);
                
break;
        }

    }


    
void AddExtensions(XmlElement el)
    
...{
        
if (el.Attributes["path"== null...{
            
throw new AddInLoadException("One extension node has no path attribute defined.");
        }
            
        Extension e 
= new Extension(el.Attributes["path"].InnerText);//extension的path属性
        AddCodonsToExtension(e, el, new ConditionCollection());//调用此函数来实例化,条件,与Icodon
        extensions.Add(e);
    }


    
void AddCodonsToExtension(Extension e, XmlElement el, ConditionCollection conditions)
    
...{
        
foreach (object o in el.ChildNodes) ...{
            
if (!(o is XmlElement)) ...{
                
continue;
            }

            XmlElement curEl 
= (XmlElement)o;

        
switch (curEl.Name) ...{
                
case "And"// these nodes are silently ignored.
                case "Or":
                
case "Not":
                
case "Condition":
                    
break;
                
case "Conditional":
                
//建立conditional 集合
                default:
                ICodon codon 
= AddInTreeSingleton.AddInTree.CodonFactory.CreateCodon(this, curEl);//创建类的实例
}



//调用codonfactory
public class CodonFactory
...{
    
public ICodon CreateCodon(AddIn addIn, XmlNode codonNode)
    
...{
        CodonBuilder builder 
= codonHashtable[codonNode.Name] as CodonBuilder;
        
        
if (builder != null...{
            
return builder.BuildCodon(addIn);//创建类的实例
        }

        
        
throw new CodonNotFoundException(String.Format("no codon builder found for <{0}>", codonNode.Name));
    }

}



//类的condonbuilder
public class CodonBuilder
...{
    
public ICodon BuildCodon(AddIn addIn)
    
...{
        ICodon codon;
        
try ...{
            
// create instance (ignore case)
            codon = (ICodon)assembly.CreateInstance(ClassName, true);//调用assembly来创建类的实例,并转换为icodon接口
            
            
// set default values
            codon.AddIn = addIn;
        }
 catch (Exception) ...{
            codon 
= null;
        }

        
return codon;
    }

}

SharpDevelop的Codon名称在Xml文件中的定义

       author      = "Mike Krueger"       copyright   = "GPL"       url         = "http://www.icshar...
  • chestnuts
  • chestnuts
  • 2006年12月25日 16:28
  • 714

SharpDevelop插件系统创建过程全面分析

前言 2005年2月,我申报了一个学校组织的大学生SRTP项目,项目的题目是数据结构动画演示系统。当初在做项目之前,我无意中买了一本书,书名为《SharpDevelop软件项目开发全程剖析》。买这本...
  • judyge
  • judyge
  • 2014年11月16日 09:28
  • 470

随机过程的概念以及统计特性(读书笔记)

随机过程的概念以及统计特性通俗的来说,随机过程其实就是一组因为时间t而产生关联的随机变量的所组成的序列。改序列可以是连续的,也可以是离散的。同时,每个随机变量也同样可以是连续的或者离散的。 随机过程...
  • qq_33843297
  • qq_33843297
  • 2017年10月12日 12:24
  • 182

制作SharpDevelop插件

来源:http://blog.sina.com.cn/s/blog_7b60d05f0101uzbj.html     这段时间在研究SD编译器内部的东西,做一个...
  • skysword2
  • skysword2
  • 2016年12月28日 17:00
  • 547

Hawq学习笔记 --- 存储过程生成数据

Hawq学习笔记 --- 存储过程生成数据
  • u012965373
  • u012965373
  • 2017年01月17日 12:19
  • 512

SharpDevelop安装与配置

SharpDevelop是一个用于C#开发的IDE,相比于VisualStudio的臃肿,SharpDevelop的小巧能让人专注于C#开发。 SharpDevelop官方下载地址:http://ww...
  • gsls200808
  • gsls200808
  • 2015年09月19日 20:20
  • 1434

插件式程序开发sharpdevelop(2) 插件树和插件定义

插件文件描述           插件的加载需要两类文件,AddIn XML的配置定义文件,及程序集文件(DLL,以及相关的附件文件和库等)。 当sharpdevelop核心开始和编译成单独树...
  • Tonyyan19781
  • Tonyyan19781
  • 2017年03月13日 20:26
  • 372

SharpDevelop 5.1 调试一个简单会员管理系统

下面使用SharpDevelop 5.1 调试一个简单会员管理系统,源码来自 http://www.softhy.net/soft/35411.htm 在SharpDevelop 5....
  • bcbobo21cn
  • bcbobo21cn
  • 2016年08月03日 10:07
  • 685

CAFFE源码学习笔记之一

单纯的将自己的笔记上的内容一点点搬运过来。 在复习卷积神经网络的同时还能学习一下系统级c++程序的规范和技巧。 ××××××××××××××××× 一、前言 本系列就是要把caffe这样一个系...
  • sinat_22336563
  • sinat_22336563
  • 2017年03月30日 11:18
  • 290

Oracle存储过程学习笔记

Oracle存储过程学习笔记
  • wahaa591
  • wahaa591
  • 2015年07月01日 17:29
  • 693
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SharpDevelop学习笔记--什么是codon,与codon的创建过程
举报原因:
原因补充:

(最多只允许输入30个字)