C#4.0使用Reflection.Emit在运行时更改方法';回归
在我制作插件的程序中,加载了多个.dll文件。我特别感兴趣的一个.dll/library/assemblies。此程序集包含具有返回布尔值的方法的类。我希望能够使用反射。发射到一些如何改变该方法将返回什么(可能在启动时?)。需要注意的一些事项:C#4.0使用Reflection.Emit在运行时更改方法';回归,c#,.net,dll,reflection,C#,.net,Dll,Reflection,在我制作插件的程序中,加载了多个.dll文件。我特别感兴趣的一个.dll/library/assemblies。此程序集包含具有返回布尔值的方法的类。我希望能够使用反射。发射到一些如何改变该方法将返回什么(可能在启动时?)。需要注意的一些事项: 我无法访问.dll的原始源代码 我不想使用Plan B和使用反射器反编译引用的程序集,修复错误并重新编译 一切工作的方式是,我所有的代码目前都编译成一个dll,作为实际程序的插件运行。我确实需要能够覆盖/重写方法体/更改程序正在使用的程序集的返回值。
- 我无法访问.dll的原始源代码
- 我不想使用Plan B和使用反射器反编译引用的程序集,修复错误并重新编译
public virtual bool exampleBool(bool b)
{
return b;
}
public virtual bool exampleBool(bool b)
{
return true;
}
我想在My-plugin-for-program.dll中替换它的代码:
public virtual bool exampleBool(bool b)
{
return b;
}
public virtual bool exampleBool(bool b)
{
return true;
}
这只是一个例子。我想学习并调整任何提供的教程和资源,使之成为我真正想要实现的目标。我没有提供要替换的实际代码,因为它太块状了。您应该看看这个线程。。它将为你指明一个更好的方向。就我个人而言,我在Mono.Cecil上的运气比在Reflection.Emit上好得多。谢谢大家,我明天会调查的。