gpt4 book ai didi

c# - 如何覆盖现有 DLL 中的 C# 方法?

转载 作者:行者123 更新时间:2023-12-05 06:44:48 27 4
gpt4 key购买 nike

我有一个例子,我正在使用别人的库,作为 DLL 导入。我只想更改该类中的两个私有(private)函数。我真的很喜欢在 DLL 外部执行此操作,因此当其他人发布新的 DLL 时,我可以快速更新我的 DLL,而不必更改源代码和构建我自己的 DLL。

这有可能吗?我能否以某种方式从 DLL 外部覆盖 C# dll 中的一些私有(private)函数?

最佳答案

I really like to do this externally to the DLL, so when that other person releases a new DLL, I can just quickly update my DLL

想想这个。假设您成功拦截/覆盖了他们的私有(private)函数。当下一个版本删除这些功能或改变它们的行为时会发生什么?

成员通常是私有(private)的是有原因的。

有效的方法是包装外部程序集以控制/抽象行为,或覆盖为继承而设计的公共(public)/ protected 成员。

通过反射调用私有(private)成员很容易。 修改它们以便它们的调用者使用新的实现更加复杂。

and not have to alter the source and build my own DLL.

如果您真的、真的需要这样做,更改源代码可能是最直接的方法。*您也可以查看 IL weaving这可能适合这项任务。

更好的方法是与作者合作,使库在您需要的领域更具可扩展性。

* 这假定您可以合法访问源代码或被允许反编译程序集。这可能会违反许可证中的逆向工程条款、使维护契约(Contract)无效等。我不是律师。

关于c# - 如何覆盖现有 DLL 中的 C# 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27307097/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com