2014-12-05 115 views
0

我有一個實例,我正在使用別人的庫,導入爲一個DLL。我只想更改該類中的兩個私有函數。我真的很喜歡在DLL外部執行此操作,所以當其他人釋放一個新的DLL時,我可以快速更新我的DLL,而不必更改源代碼並構建自己的DLL。如何覆蓋現有DLL中的C#方法?

是否有可能做到這一點?我可以以某種方式在DLL外部重寫C​​#DLL中的一些私有函數嗎?

+1

你可以從他們的課堂派生嗎? – BradleyDotNET 2014-12-05 01:03:31

+0

我想我可以,是的。但是我想改變的功能是私人的。 – rygo6 2014-12-05 01:04:38

+2

如果這是可能的,我會很驚訝。 – 2014-12-05 01:04:44

回答

0

我認爲你可以使用TypeBuilder.DefineMethodOverride。詳情請參閱此問題Is there a way to "override" a method with reflection?

如果這不起作用,您可以嘗試使用反射來構建一個運行時代理類,但將調用替換爲您想要在實現中重寫的方法。這當然是一點巫術。代碼工具做類似的事情 - 在你的方法中注入自定義代碼。實際上,這就是我所建議的研究 - 儀器如何工作。