I just used a class for each card effect which I attached to an empty game object, then when I wanted to play the card i just instantiated the relevant game object. I'm sure that there is a better way to do it though.