元程式設計技術和動態編譯

2021-03-31 08:56:29 字數 789 閱讀 9596

什麼是元程式設計?

執行時動態建立型別的功能稱為元程式設計。(這個是.***環境程式設計全景

中的定義)

從學習uml就知道meta-的重要性了,再後來了解到mof(metaobjectfacility)就更加著迷這個meta-。

meta-  在...之中... 對於想真正了解乙個framework,了解它的meta東西是十分重要的。不管任何乙個framework,肯定存在著它自己的metadata的,.***作為乙個framework自然也存在好多元資料,我們編寫應用程式中如果可以靈活的運用元程式設計技術,肯定可以使我們的程式更加靈活,高效甚至自我生成。

下圖展示了.*** framework中和元程式設計有關的類:

例如下面這個例子直接生成乙個dll,並且呼叫這個dll中的動態方法:

using

system;

using

system.reflection;

using

system.reflection.emit;

using

system.threading;

namespace

testmetaprog

生成結果:

用ilda**看生成的dll,發現確實是個有效的clr檔案:

其中metaprogmethod的方法對應的il如下:

思考:

元程式設計似乎也可以動態直接生成編譯後的效果檔案了,而microsoft.csharp.***piler也有乙個編譯類,

可以將輸入的cs格式檔案編譯出dll的,兩者有何區別?那種更好?

例子**

C 模板元程式設計技術

模板元程式設計 template metaprogramming 更準確的含義應該是 編 可以程式設計序的 程式 而模板元程式 template metaprogram 則是 可以程式設計序的 程式 也就是說,我們給出 的產生規則,編譯器在編譯期解釋這些規則並生成新 來實現我們預期的功能。讓我們來看...

巨集元程式設計 技術 auto rec

auto rec巨集會快速探測滿足探測謂詞條件的 序號 最小的巨集。如果滿足條件會走實線深度往下探測,當遇到不滿足條件會走虛線。下面以探測16以內的 序號 define tl node 16 p tl if p 16 tl node 8,tl node 24 define tl node 8 p t...

論程式設計技術和程式設計思想

之前一直在糾結乙個問題,就是自己選擇的程式語言能不能應對快速變化的時代發展以及就業的需要,哪一種語言更好?學習多深可以滿足需求?等等的問題 後來糾結的久了也就無所謂了,解決問題的思路對了,解決問題的方法有很多的時候你會在乎用哪個方法解決嗎?肯定是哪個順手就用哪個了,前提是有所涉獵。也就是說,不要求每...