namespace SortingVisualization { public abstract class SortingAlgorithm { public abstract void Sort(ref DataSet set); public abstract string GetAlgorithmName(); public void Simulate(ref DataSet set) { if (!set.SimulateMode) { set.SimulateMode = true; Sort(ref set); set.SimulateMode = false; set.SortingAlgorithm = this.GetAlgorithmName(); } } } }