is this a stupid approach?

I wouldn’t say it is stupid, but there are far better ways built into Unity.

You should consider learning about ScriptableObjects and then using them as assets on disk to control the game functions of each tower upgrade, all commonly processed through MonoBehaviours.

ScriptableObject usage in RPGs:

Usage as a shared common data container: