我怎樣才能修改內存加載的方法在給定的程序集,以便clr實例化新對象的某些類時,它使修改後的代碼中的新對象?在運行時修改程序集?
2
A
回答
1
我不認爲你可以做到這一點。但是您可以使用Reflection.Emit在新內存程序集中生成新類。
雖然這是很多工作。您可以從框架(如Castle DynamicProxy)獲得幫助,該框架允許您在運行時爲您的類生成代理。這樣,您可以在原始方法運行之前或之後運行任何代碼,或者通過不調用原始方法來完全更改方法。
3
在加載之前,您可以使用Mono Cecil來修改程序集。
您可以將修改後的程序集保存到字節數組,然後調用Assembly.Load
來加載字節數組。
相關問題
- 1. 在運行時修改persistence.xml
- 2. 在運行時修改propertyGrid
- 3. 在grails應用程序運行時修改groovy代碼
- 4. 在運行時加載程序集
- 5. 在運行時加載的程序集
- 6. .net在運行時重裝程序集
- 7. PHP運行時類修改
- 8. 運行時修改strings.xml
- 9. 在運行時更改.Net程序集名稱
- 10. 在運行時創建jrxml文件並在運行時修改
- 11. 運行時錯誤「無法修改非左值子程序」
- 12. 在運行時修改Datepicker翻譯
- 13. 在運行時修改JVM參數
- 14. 在Django運行時修改urlpatterns
- 15. 在運行時修改向量
- 16. 修改的ListView的ItemTemplate在運行時
- 17. 在運行時修改TableAdapter命令
- 18. 在運行時修改導軌模型
- 19. 在運行時創建/修改枚舉
- 20. 在運行時修改材質
- 21. 在運行時修改JVM標誌
- 22. 在運行時修改CABasicAnimation的setvalue?
- 23. C++在運行時修改資源
- 24. 在運行時擴展/修改NHibernate類
- 25. ItemsControl的在運行時修改
- 26. 重寫或修改在運行時
- 27. Django在運行時修改DATABASE_HOST
- 28. 運行時的.NET程序集信息
- 29. 運行時程序集解析
- 30. 在程序集中運行簡單程序時出錯
我寧可不使用第三方庫 – 2010-06-09 17:45:50
好的,然後放棄,或從頭開始重寫Mono Cecil。沒有替代。 – SLaks 2010-06-09 17:59:16