修改内部.NET类的方法实现

ygo*_*goe 3 .net c# reflection

我想修改我的C#/ .NET应用程序在内部工作的方式.我已经使用Reflector挖掘了.NET框架,并找到了一个非常好的地方,我可以使用不同的方法实现.这是System.Windows.Forms命名空间中的内部类.您显然无法使用常规方法更改此类的代码,因此我认为可以在运行时通过反射替换其中的方法.我想完全替换我的应用程序的方法是这样的:

public static WindowsFontQuality WindowsFontQualityFromTextRenderingHint(Graphics g)

在课堂里:

internal sealed class System.Windows.Forms.Internal.WindowsFont

有没有办法加载该类型并在运行时替换该方法,而不影响当前正在运行或之后启动的任何其他应用程序?我试图用Type.GetType()类似的东西加载类型但到目前为止失败了.

Jon*_*eet 8

可以使用调试器API执行此操作 - 但这是一个非常非常糟糕的主意.

首先,安装调试器挂钩运行可能会更慢 - 但更重要的是,篡改框架代码很容易导致意外行为.在所有可能的场景中,您是否确切知道如何使用此方法,甚至在您自己的应用程序中?

它也很可能会产生不良的法律后果,尽管你应该向律师咨询.

我个人会放弃这种思路,并尝试以不同的方式来完成你想要做的任何事情.