簡體   English   中英

在運行時創建一個新方法

[英]Create a new method at run-time

我想學習一種巧妙的技巧,即通過某些客戶端代碼想要的簽名動態創建方法。 就像System.Delegate.BeginInvokeEndInvokeInvoke方法一樣。

我正在System.Delegate類的內部查找這些方法,但找不到它們( DynamicInvoke除外,這很不好玩,因為它無論如何都會動態地將調用分派給后期綁定的方法),因此顯然這些方法是在運行時創建的-時間。

我正在摸索要如何執行這樣的事情。 我在大聲思考:

1)代碼DOM無效,因為我對構造新程序集不感興趣。 我只想向同一程序集中的類添加新方法。

2)良好的舊反射效果很好。 我可以創建一個具有與客戶端代碼指定的參數相同的參數的新MethodInfo ,但是然后如何獲取新的MethodInfo作為方法顯示在我的類中呢?

誰能闡明這一點?

該問題的答案是使用System.Reflection.Emit.DynamicMethod類。 要查看工作示例,請訪問此鏈接

非常感謝Jon Skeet指導我朝正確的方向發展。 請參閱對此問題的評論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM