¿Puedo redirigir las llamadas al método .NET a un nuevo método en tiempo de ejecución?

Supongamos que tengo las siguientes clases .NET:

public class C
{
    public void M()
    {
        ....
    }
}

y

public class D
{
    public void N()
    {
        ....
    }
}

Estas 2 clases residen en diferentes espacios de nombres, en diferentes ensamblados. ¿Hay alguna manera de hacer que todas las llamadas aC.M() para 'redirigir' automáticamente aD.N()? Entonces, el método de llamada es invocarC.M, Pero en la realidad,D.N es lo que realmente se llama, con cualquier parámetro queC.M habría tomado. No importa si esto sucede para todas las instancias de la clase, o solo para un objeto específico.

MS Research tiene laBiblioteca de desvíos eso puede hacer algo muy similar para las exportaciones normales de Win32 DLL. Estoy buscando una manera de hacer esto con un método .NET.

Respuestas a la pregunta(5)

Su respuesta a la pregunta