protected abstract void React(IEntity entity, ReagentPrototype reagent, ReagentUnit volume, Solution.Solution? source);
public void React(ReactionMethod method, IEntity entity, ReagentPrototype reagent, ReagentUnit volume, Solution.Solution? source) { switch (method) { case ReactionMethod.Touch: if (!Touch) return; break; case ReactionMethod.Injection: if(!Injection) return; break; case ReactionMethod.Ingestion: if(!Ingestion) return; break; default: throw new ArgumentOutOfRangeException(nameof(method), method, null); } React(entity, reagent, volume, source); }