自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#動(dòng)態(tài)編譯簡(jiǎn)單剖析

開(kāi)發(fā) 后端
這里介紹C#動(dòng)態(tài)編譯,程序會(huì)根據(jù)類(lèi)型名稱(chēng)來(lái)自動(dòng)找到符合條件的類(lèi)并實(shí)例化。如果代碼中有多個(gè)指定類(lèi)型的類(lèi),將實(shí)例化第一個(gè)。

C#語(yǔ)言有很多值得學(xué)習(xí)的地方,這里我們主要介紹C#動(dòng)態(tài)編譯,包括介紹公共屬性和公共方法等方面。

前幾天看到一篇關(guān)于C#動(dòng)態(tài)編譯的文章,很受啟發(fā)。在此基礎(chǔ)上我做了一些封裝,為使調(diào)用更加簡(jiǎn)單,并增加了對(duì)動(dòng)態(tài)代碼調(diào)試的支持,相同代碼只編譯一次的支持,代碼改動(dòng)自動(dòng)重新編譯,代碼引用文件的自動(dòng)加載和手工加載等功能。

自動(dòng)加載和手工加載等功能

如上圖,我封裝的類(lèi)CSharpProvider很簡(jiǎn)單,下面說(shuō)明一下一些公共成員的用法。

公共屬性:
◆AssemblyFileName:這個(gè)屬性指定C#動(dòng)態(tài)編譯后生成的配件名稱(chēng)。
◆CompilerParameters:這個(gè)屬性指定編譯的參數(shù)
◆References:這個(gè)屬性指定被編譯代碼中的引用。調(diào)用者只要調(diào)用 References.Add("xxx.dll"),就可以加入自己的引用,對(duì)于System命名空間的所有引用,不需要手工加入,該類(lèi)會(huì)自動(dòng)加載。對(duì)于用戶(hù)自己的組件,如果不手工指定引用文件,該類(lèi)會(huì)自動(dòng)根據(jù)名字空間名進(jìn)行猜測(cè)。
◆ SourceCodeFileEncoding:如果以文件形式編譯,指定文件的編碼類(lèi)型。

公共方法:
◆public bool Compile(string code)  輸入代碼字符串,并編譯
◆public bool CompileFromFile(string sourceCodeFileName)編譯輸入的代碼文件
◆public object CreateInstance(string code, string typeFullName)創(chuàng)建類(lèi)的實(shí)例

如下面代碼,可以輸入 CreateInstance(code, "MyInterface.IHelloWorld"),也可以輸入CreateInstance(code, "HelloWorld"),程序會(huì)根據(jù)類(lèi)型名稱(chēng)來(lái)自動(dòng)找到符合條件的類(lèi)并實(shí)例化。如果代碼中有多個(gè)指定類(lèi)型的類(lèi),將實(shí)例化第一個(gè)。

  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#類(lèi)和結(jié)構(gòu)簡(jiǎn)單介紹
  2. C# explicti和implicit詳解
  3. C#編寫(xiě)ActiveX控件詳細(xì)介紹
  4. C# StringBuilder和String淺析
  5. C#別名指示符學(xué)習(xí)經(jīng)驗(yàn)
責(zé)任編輯:佚名 來(lái)源: cnblogs
相關(guān)推薦

2009-08-28 11:16:51

C#日期型數(shù)

2009-08-13 17:36:54

編譯C#代碼

2009-08-31 18:24:26

編譯C#文件

2009-09-17 17:40:36

C#動(dòng)態(tài)數(shù)組

2009-08-28 14:57:40

C#設(shè)置快捷方式

2009-09-02 18:41:18

C#定義動(dòng)態(tài)控件數(shù)組

2009-09-01 10:35:19

C# 3.0編譯器

2009-09-07 14:29:52

C# ServiceC

2009-08-27 17:14:36

C# Socket

2009-09-01 16:29:03

QuickSort C

2009-09-01 11:04:59

C#調(diào)用擴(kuò)展方法

2009-09-11 11:09:36

C#引用類(lèi)型

2009-09-02 18:14:33

C# WebClien

2009-09-11 11:17:04

C#引用類(lèi)型

2009-08-28 10:44:46

C#字符數(shù)組轉(zhuǎn)換

2009-09-18 10:00:17

C#數(shù)組操作

2009-08-31 17:26:32

C#異常處理

2009-08-27 17:51:34

C#匿名方法

2009-09-03 16:58:49

C#內(nèi)存管理

2009-11-03 14:13:23

VB.NET C#
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)