C#动态编译简单剖析

开发 后端
这里介绍C#动态编译,程序会根据类型名称来自动找到符合条件的类并实例化。如果代码中有多个指定类型的类,将实例化第一个。

C#语言有很多值得学习的地方,这里我们主要介绍C#动态编译,包括介绍公共属性和公共方法等方面。

前几天看到一篇关于C#动态编译的文章,很受启发。在此基础上我做了一些封装,为使调用更加简单,并增加了对动态代码调试的支持,相同代码只编译一次的支持,代码改动自动重新编译,代码引用文件的自动加载和手工加载等功能。

自动加载和手工加载等功能

如上图,我封装的类CSharpProvider很简单,下面说明一下一些公共成员的用法。

公共属性:
◆AssemblyFileName:这个属性指定C#动态编译后生成的配件名称。
◆CompilerParameters:这个属性指定编译的参数
◆References:这个属性指定被编译代码中的引用。调用者只要调用 References.Add("xxx.dll"),就可以加入自己的引用,对于System命名空间的所有引用,不需要手工加入,该类会自动加载。对于用户自己的组件,如果不手工指定引用文件,该类会自动根据名字空间名进行猜测。
◆ SourceCodeFileEncoding:如果以文件形式编译,指定文件的编码类型。

公共方法:
◆public bool Compile(string code)  输入代码字符串,并编译
◆public bool CompileFromFile(string sourceCodeFileName)编译输入的代码文件
◆public object CreateInstance(string code, string typeFullName)创建类的实例

如下面代码,可以输入 CreateInstance(code, "MyInterface.IHelloWorld"),也可以输入CreateInstance(code, "HelloWorld"),程序会根据类型名称来自动找到符合条件的类并实例化。如果代码中有多个指定类型的类,将实例化第一个。

  1. using System;  
  2. using MyInterface;  
  3.  
  4. [Serializable]  
  5. public class HelloWorld : MarshalByRefObject, IHelloWorld  
  6. {  
  7. public string Say()  
  8. {  
  9. return "Hi";  
  10. }  

【编辑推荐】

  1. C#类和结构简单介绍
  2. C# explicti和implicit详解
  3. C#编写ActiveX控件详细介绍
  4. C# StringBuilder和String浅析
  5. C#别名指示符学习经验
责任编辑:佚名 来源: cnblogs
相关推荐

2009-08-28 11:16:51

C#日期型数

2009-08-31 18:24:26

编译C#文件

2009-08-13 17:36:54

编译C#代码

2009-09-17 17:40:36

C#动态数组

2009-09-02 18:41:18

C#定义动态控件数组

2009-08-28 14:57:40

C#设置快捷方式

2009-09-01 10:35:19

C# 3.0编译器

2009-08-27 17:14:36

C# Socket

2009-09-07 14:29:52

C# ServiceC

2009-09-01 16:29:03

QuickSort C

2009-09-11 11:09:36

C#引用类型

2009-09-02 18:14:33

C# WebClien

2009-09-01 11:04:59

C#调用扩展方法

2009-09-11 11:17:04

C#引用类型

2009-08-27 17:51:34

C#匿名方法

2009-08-31 17:26:32

C#异常处理

2009-09-03 16:58:49

C#内存管理

2009-08-28 10:44:46

C#字符数组转换

2009-09-18 10:00:17

C#数组操作

2009-11-03 14:13:23

VB.NET C#
点赞
收藏

51CTO技术栈公众号