2009-10-26 78 views
4

有沒有辦法將字節碼直接動態插入到我的C#可執行文件中?我正在尋找類似於C++中asm關鍵字的功能。很明顯,我知道我不能插入x86彙編指令。我只能插入IL字節碼。直接插入字節碼

回答

5

是的,你可以使用DynamicMethod這基本上做到這一點(你得到一個委託來調用你用動態方法生成的代碼)。實際上,幾個框架部分似乎使用它們,包括編譯的XSL轉換,編譯的正則表達式等。它們工作得很好,並且它們非常高效(在創建/編譯它們的初始開銷之後)。

+0

正是我在找的東西!多謝,夥計! – Icemanind 2009-10-26 07:54:43

+0

不客氣。一些有趣的信息可以在這裏找到標籤在這裏:http://stackoverflow.com/questions/tagged/dynamicmethod(和我的一個樣本在這裏:http://stackoverflow.com/questions/1516119) - 玩得開心! ;) – Lucero 2009-10-26 09:07:50

1

可以使用Reflection.Emit的 directy - 必須創建一個裝配/模塊/類/方法,並插入IL上的方法主體。

-

使用.NET 2.0,您可以使用DynamicMethod的可在委託進行編譯,所以你不需要動態創建裝配/模塊/類。

-

與.NET 3.0的,你可以使用ExpressionTrees動態生成的代碼,並連接到一個代表。

-

希望這會有所幫助。

Ricardo Lacerda Castelo Branco