Cómo crear un método en tiempo de ejecución usando Reflection.emit

Estoy creando un objeto en tiempo de ejecución usando la emisión de reflexión. Creé con éxito los campos, las propiedades y obtuve los métodos establecidos. Ahora quiero agregar un método. Por simplicidad, digamos que el método solo devuelve un número aleatorio. ¿Cómo defino el cuerpo del método?

EDITAR:

Sí, he estado mirando la documentación de msdn junto con otras referencias y estoy empezando a entender todo esto. Veo cómo el ejemplo anterior está agregando y / o multiplicando, pero qué pasa si mi método está haciendo otras cosas. ¿Cómo defino ese "material"? Supongamos que estaba generando la clase siguiente dinámicamente, ¿cómo crearía el cuerpo del método GetDetails ()?

class TestClass
{
    public string Name  { get; set; }
    public int Size  { get; set; }

    public TestClass()
    {
    }

    public TestClass(string Name, int Size)
    {
        this.Name = Name;
        this.Size = Size;
    }

    public string GetDetails()
    {
        string Details = "Name = " + this.Name + ", Size = " + this.Size.ToString();
        return Details;
    }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta