How would you design a solution to this problem? - C#