Change the Pipeline of a Material at Runtime

Is there any way to set the shader of a material at runtime?
material.shader is only a a getter

A workaround could be to create as much material as u need and change that and rearrange the parameters, since different shaders can have different ones