Como criar um proxy dinâmico simples em C #

uero criar um objeto proxy dinâmico para adicionar determinadas funcionalidades a um objet

basicamente quero receber um objeto, envolvê-lo com um objeto que pareça idêntico ao original que recebi e interceptar todas as chamada

class Wrapper : DynamicProxy// dynamic proxy is not a reall class, but i guess something like this exists...
{
    public static T Wrap(T obj)
    {
        return (T) new Wrapper(obj);
    }

    public override object InterceptCall(MethodInfo info, object[] args)
    {
        // do stuff
    }

}

Apenas para esclarecer, quero fazer algo semelhante à fábrica de canais WCF ...

Estou adicionando uma recompensa, porque preciso de uma boa maneira de proxy de classes (não interfaces) e de lidar com métodos não virtuais (como se eu tivesse herdado e adicionado um método na palavra-chave "new"). Tenho certeza de que tudo isso é muito possível, pois o .Net faz isso.

questionAnswers(7)

yourAnswerToTheQuestion