[WorldWind学习]10.插件结构

  WW的插件结构很神奇,内部插件编译在DLL中,外部的则直接以.cs文件的形式加载,路径(C:\Program Files (x86)\NASA\World Wind 1.4\Plugins)

  内部的以Assembly类来动态加载,外部的CodeDomProvider动态编译后加载!

  PluginCompiler.cs文件中的方法public void Load(PluginInfo pi)

 1  /// <summary>
 2         /// Load a plugin
 3         /// </summary>
 4         public void Load(PluginInfo pi)
 5         {
 6             if (pi.Plugin == null)
 7             {
 8                 // Try to find a suitable compiler
 9                 string extension = Path.GetExtension(pi.FullPath).ToLower();
10                 Assembly asm = null;
11                 if (extension == ".dll")
12                 {
13                     // Load pre-compiled assembly
14                     asm = Assembly.LoadFile(pi.FullPath);
15                 }
16                 else
17                 {
18                     CodeDomProvider cdp = (CodeDomProvider)codeDomProviders[extension];
19                     if (cdp == null)
20                         return;
21                     asm = Compile(pi, cdp);
22                 }
23 
24                 pi.Plugin = GetPluginInterface(asm);
25             }
26 
27             string pluginPath = MainApplication.DirectoryPath;
28             if (pi.FullPath != null && pi.FullPath.Length > 0)
29                 pluginPath = Path.GetDirectoryName(pi.FullPath);
30 
31             pi.Plugin.PluginLoad(mainApplication, pluginPath);
32         }

参考:http://msdn.microsoft.com/zh-cn/library/system.codedom.compiler.codedomprovider(v=VS.90).aspx  

     http://blog.csdn.net/sharpnessdotnet/article/details/1921306

   http://www.cnblogs.com/wuhenke/archive/2009/12/16/1625585.html  .NET运行时编译学习——CodeDomProvider、CodeCompileUnit和CODEDOM

   CODEDOM学习系列:http://www.cnblogs.com/lichdr/category/12610.html

  CodeDomProvider 可用于创建和检索代码生成器和代码编译器的实例。代码生成器可用于以特定的语言生成代码,而代码编译器可用于将代码编译为程序集。


  CodeDomProvider 实现通常为一种编程语言提供用于生成代码和管理编译的代码生成和/或代码编译接口。Windows 软件开发工具包 (SDK) 附带的 CodeDomProvider 实现支持多种语言。这些语言包括 C#、Visual Basic、C++、J# 和 JScript。开发人员或编译器提供商可以实现 ICodeGeneratorICodeCompiler 接口,并提供将 CodeDom 支持扩展到其他编程语言的 CodeDomProvider

  计算机配置文件 (Machine.config) 中的 <system.codedom> 元素 为开发人员和编译器提供商提供了一种机制,以便为其他 CodeDomProvider 实现添加配置设置。

  CodeDomProvider 类提供静态方法以发现和枚举计算机上的 CodeDomProvider 实现。GetAllCompilerInfo 方法返回计算机上所有 CodeDomProvider 实现的设置。GetCompilerInfo 方法会基于编程语言名称返回特定 CodeDomProvider 实现的设置。CreateProvider 方法返回特定语言的 CodeDomProvider 实现的实例。

文章未经说明均属原创,学习笔记可能有大段的引用,一般会注明参考文献。 欢迎大家留言交流,转载请注明出处。
原文地址:https://www.cnblogs.com/yhlx125/p/3016209.html