一、程序的基本结构


实现简单的CSharpShell -- OrcShell (1)  基本结构

 

程序的控制核心是Context类,它持有:

·类型管理器TypeManager,管理该运用程序域加载的命名空间及类型的树,树结构如下:

实现简单的CSharpShell -- OrcShell (1)  基本结构     TypeDictionary(Root)
实现简单的CSharpShell -- OrcShell (1)  基本结构         
|--TypeDictionary
实现简单的CSharpShell -- OrcShell (1)  基本结构         
|       |--TypeDictionary
实现简单的CSharpShell -- OrcShell (1)  基本结构         
|       |--TypeDictionary
实现简单的CSharpShell -- OrcShell (1)  基本结构         
|       |实现简单的CSharpShell -- OrcShell (1)  基本结构实现简单的CSharpShell -- OrcShell (1)  基本结构
实现简单的CSharpShell -- OrcShell (1)  基本结构         
|       |--Type
实现简单的CSharpShell -- OrcShell (1)  基本结构         
|       |--Type
实现简单的CSharpShell -- OrcShell (1)  基本结构         
|       |实现简单的CSharpShell -- OrcShell (1)  基本结构实现简单的CSharpShell -- OrcShell (1)  基本结构
实现简单的CSharpShell -- OrcShell (1)  基本结构         
|
实现简单的CSharpShell -- OrcShell (1)  基本结构         
|--TypeDictionary
实现简单的CSharpShell -- OrcShell (1)  基本结构         
|实现简单的CSharpShell -- OrcShell (1)  基本结构实现简单的CSharpShell -- OrcShell (1)  基本结构
实现简单的CSharpShell -- OrcShell (1)  基本结构         
|--Type
实现简单的CSharpShell -- OrcShell (1)  基本结构         
|--Type
实现简单的CSharpShell -- OrcShell (1)  基本结构         
|实现简单的CSharpShell -- OrcShell (1)  基本结构实现简单的CSharpShell -- OrcShell (1)  基本结构
实现简单的CSharpShell -- OrcShell (1)  基本结构

其中TypeDictionary对应的是命名空间,Type对应的是类型。TypeManager还管理一个名为NowTypeDictionary,表示当前所在的 TypeDictionary

·AliasCmds ,命令缩写字典。

·Instances,用户变量字典。

·CmdDispatcher是命令指派器。控制台获取指令后传给Context。代码:

实现简单的CSharpShell -- OrcShell (1)  基本结构            while ((cmd = Console.ReadLine().Trim()) != "exit")

 

Context又传给CmdDispatcher处理。CmdDispatcher解析命令,根据命令的特征选择不同的CmdHandler来处理。目前编写了5CmdDispatcher

CdClassCmdHandler:进出命名空间的处理,针对cdc指令;

ListClassCmdHandler:列出命名空间和类型,针对lsc,dirc指令;

ListInstanceCmdHandler:列出用户变量,针对 my 指令;

ListAliasCmdHandler:列出指令缩写,针对 alias 指令;

CscCmdHandler:编译并运行代码,其它CmdDispatcher 处理不了的都交给它。

CmdDispatcher.Dispatch()方法代码:

 

实现简单的CSharpShell -- OrcShell (1)  基本结构        public void Dispatch()


相关文章:

  • 2021-11-09
  • 2021-07-10
  • 2021-09-23
  • 2021-06-02
  • 2021-05-31
  • 2021-10-02
  • 2021-05-20
  • 2021-06-26
猜你喜欢
  • 2021-10-27
  • 2022-02-25
  • 2021-07-02
  • 2022-12-23
  • 2022-12-23
  • 2021-09-07
  • 2021-12-18
相关资源
相似解决方案