我想在运行时向某些类添加某些行为。我知道如何在运行时使用Reflection.Emit进行子类化,但这还不够。根据某些外部配置,我需要在类型T的方法中注入操作码,以便从其继承的所有类都将自动获得此行为。 (我不能使用.NET Profiling API。)>
可以用Mono.Cecil完成类似的事情吗?
如果无法在已加载的程序集上修改代码,那很好,如果我可以在程序集加载之前进行修改,然后将修改后的程序集加载到内存中,但是我不知道如何控制程序集加载中。
我想在运行时向某些类添加某些行为。我知道如何在运行时使用Reflection.Emit进行子类化,但这还不够。根据某些外部配置,我需要注入...
[不,Cecil无法修改已加载的部件。您必须先对程序集进行检测,然后才能实际加载它们。
正如JB在上面说的那样-您可以创建一个Resolve Event处理程序-类似于PSeudoHooking。在加载程序集之前,先进行更改,然后完成更改,然后“解析程序集”将继续加载已更改的程序集。