[英]Create a new method at run-time
我想學習一種巧妙的技巧,即通過某些客戶端代碼想要的簽名動態創建方法。 就像System.Delegate.BeginInvoke
, EndInvoke
和Invoke
方法一樣。
我正在System.Delegate
類的內部查找這些方法,但找不到它們( DynamicInvoke
除外,這很不好玩,因為它無論如何都會動態地將調用分派給后期綁定的方法),因此顯然這些方法是在運行時創建的-時間。
我正在摸索要如何執行這樣的事情。 我在大聲思考:
1)代碼DOM無效,因為我對構造新程序集不感興趣。 我只想向同一程序集中的類添加新方法。
2)良好的舊反射效果很好。 我可以創建一個具有與客戶端代碼指定的參數相同的參數的新MethodInfo
,但是然后如何獲取新的MethodInfo
作為方法顯示在我的類中呢?
誰能闡明這一點?
該問題的答案是使用System.Reflection.Emit.DynamicMethod
類。 要查看工作示例,請訪問此鏈接 。
非常感謝Jon Skeet指導我朝正確的方向發展。 請參閱對此問題的評論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.