C#4.0使用Reflection.Emit在运行时更改方法';回归

C#4.0使用Reflection.Emit在运行时更改方法';回归,c#,.net,dll,reflection,C#,.net,Dll,Reflection,在我制作插件的程序中,加载了多个.dll文件。我特别感兴趣的一个.dll/library/assemblies。此程序集包含具有返回布尔值的方法的类。我希望能够使用反射。发射到一些如何改变该方法将返回什么(可能在启动时?)。需要注意的一些事项: 我无法访问.dll的原始源代码 我不想使用Plan B和使用反射器反编译引用的程序集,修复错误并重新编译 一切工作的方式是,我所有的代码目前都编译成一个dll,作为实际程序的插件运行。我确实需要能够覆盖/重写方法体/更改程序正在使用的程序集的返回值。

在我制作插件的程序中,加载了多个.dll文件。我特别感兴趣的一个.dll/library/assemblies。此程序集包含具有返回布尔值的方法的类。我希望能够使用反射。发射到一些如何改变该方法将返回什么(可能在启动时?)。需要注意的一些事项:

  • 我无法访问.dll的原始源代码
  • 我不想使用Plan B和使用反射器反编译引用的程序集,修复错误并重新编译
一切工作的方式是,我所有的代码目前都编译成一个dll,作为实际程序的插件运行。我确实需要能够覆盖/重写方法体/更改程序正在使用的程序集的返回值。我所听到的唯一一件事就是反射。发射也许是我的希望。这只是有人给我的一个建议,他想让我潜得更深一些

称为from-program.dll的汇编代码:

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上好得多。谢谢大家,我明天会调查的。