É possível modificar um corpo de método em tempo de execução no .NET?

Eu sei que é possível (em teoria) criar um novo tipo em tempo de execução, mas é possível modificar um corpo de método de um tipo existente em tempo de execução? Meu plano (se eu conseguir que isso funcione) é marcar os métodos com um atributo personalizado e, em tempo de execução, procurar métodos com o atributo e inserir parte do meu próprio código no corpo do método.

Alguma sugestão?

Suponho que, se eu não conseguir que essa abordagem funcione, sempre posso usar um método virtual em uma classe base (com os atributos), combinada com uma fábrica estática para cuspir um tipo dinâmico derivado com meu método gerado em tempo de execução na classe infantil. Isso não seria tão fácil de usar.

questionAnswers(5)

yourAnswerToTheQuestion