Mono.Cecil可以修改AppDomain中已加载的代码吗?

问题描述 投票:9回答:2

我想在运行时向某些类添加某些行为。我知道如何在运行时使用Reflection.Emit进行子类化,但这还不够。根据某些外部配置,我需要在类型T的方法中注入操作码,以便从其继承的所有类都将自动获得此行为。 (我不能使用.NET Profiling API。)>

可以用Mono.Cecil完成类似的事情吗?

如果无法在已加载的程序集上修改代码,那很好,如果我可以在程序集加载之前进行修改,然后将修改后的程序集加载到内存中,但是我不知道如何控制程序集加载中。

我想在运行时向某些类添加某些行为。我知道如何在运行时使用Reflection.Emit进行子类化,但这还不够。根据某些外部配置,我需要注入...

c# .net profiling intermediate-language mono.cecil
2个回答
6
投票

[不,Cecil无法修改已加载的部件。您必须先对程序集进行检测,然后才能实际加载它们。


1
投票

正如JB在上面说的那样-您可以创建一个Resolve Event处理程序-类似于PSeudoHooking。在加载程序集之前,先进行更改,然后完成更改,然后“解析程序集”将继续加载已更改的程序集。

© www.soinside.com 2019 - 2024. All rights reserved.