動態 程式執行時 生成列舉型別

2021-06-12 03:26:04 字數 2053 閱讀 2844

(來自:

簡介:在程式執行時動態建立列舉型別及其包含的列舉項.這樣我們就可以把列舉項放在web.config這樣的xml檔案中.便於隨時更新,同時還不用重新編譯程式.

這裡,我們要用到

system.reflection.emit 命名空間.

它提供了

enumbuilder

類,用來在執行是動態建立列舉型別.

(emit空間中還包含了許多其他builder類,方便大家在程式執行時建立"程式集","類","事件"等等)

enumbuilder 類

說明並表示列舉型別。

命名空間:system.reflection.emit

程式集:mscorlib(在 mscorlib.dll 中)

c#

[classinte***ceattribute(classinte***cetype.none)] 

[comvisibleattribute(true)]

public sealed class enumbuilder : type, _enumbuilder

在 .net framework 1.0 版和 1.1 版中,需要使用 typebuilder 定義列舉,因為enumbuilder發出其元素屬於 int32 型別而非列舉型別的列舉。在 .net framework 2.0 版中,enumbuilder發出其元素具有正確型別的列舉。

下面的**示例演示了如何在動態程式集中使用enumbuilder構造列舉。該示例定義乙個名為elevation 的列舉,其基礎型別為int32,並且建立兩個元素:值為 0 的 low 和值為 1 的 high。建立完型別後,使用 tempassembly.dll 名稱來儲存程式集。可以使用 msil 反匯程式設計序 (ildasm.exe) 檢查此程式集的內容。

如果使用 .net framework 2.0 版之前的版本,此**示例不會生成正確的列舉。

c#

using system;

using system.reflection;

using system.reflection.emit;

class example

. = ", finished, o, ((int) o));}}

}/* this code example produces the following output:

elevation.low = 0

elevation.high = 1

*/

system.object

system.reflection.memberinfo

system.type

system.reflection.emit.enumbuilder

此型別的任何公共靜態(visual basic 中的shared)成員都是執行緒安全的,但不保證所有例項成員都是執行緒安全的。

windows 98, windows server 2000 sp4, windows ce, windows millennium edition, windows mobile for pocket pc, windows mobile for smartphone, windows server 2003, windows xp media center edition, windows xp professional x64 edition, windows xp sp2, windows xp starter edition

windows vista、microsoft windows xp sp2 和 windows server 2003 sp1 支援 microsoft .net framework 3.0。

.net framework 受以下版本支援:3.0、2.0、1.1、1.0

參考enumbuilder 成員

system.reflection.emit 命名空間

C 在執行時動態建立型別

c 在執行時動態的建立型別,這裡是通過動態生成c 源 然後通過編譯器編譯成程式集的方式實現動態建立型別 public static assembly newassembly n private system.componentmodel.icontainer components null npro...

執行時型別識別

執行時的型別識別 rtti 分為兩類 1.typeid操作符 2.dynamic cast操作符 先看第二種 dynamic cast完成將基類型別的指標或者引用安全轉化為派生類型別的指標和引用。對於指標,如果轉化失敗,則將指標置為null,對於引用型別,因為沒有null,所以直接丟擲bad cas...

執行時型別檢查

執行時型別資訊 run time type information 通常記做rtti。在c primer第五版中,譯作執行型別識別 run time type identification 執行時型別資訊包括三部分 1 乙個運算子dynamic cast,給它乙個指向某某物件的基類指標,它能得到乙個...