Como substituo uma implementação de método em tempo de execução?

Gostaria de ter métodos e getters de propriedade que eu possa decorar com meu próprio atributo personalizado e, com base na presença desse atributo, substituir os corpos do método por uma implementação diferente. Além disso, essa implementação diferente precisará conhecer os argumentos do construtor fornecidos ao atributo customizado em que ele decora o método.

Obviamente, isso pode ser feito com AOP, como PostSharp ou LinFu, mas estou me perguntando se existe uma maneira de fazer isso que não envolva uma etapa de processamento pós-compilação, porque adicionar isso complica o projeto mais do que eu preferiria.

questionAnswers(4)

yourAnswerToTheQuestion