public BinaryProblem(Level level) { ProblemConfiguration configuration = _levelConfiguration.GetProblemConfiguration(level); // sample code, this is where you generate your problem, based on the configuration of the problem X = new Random().Next(configuration.MaxValue + configuration.MinValue) - configuration.MinValue; Y = new Random().Next(configuration.MaxValue + configuration.MinValue) - configuration.MinValue; Answer = X + Y; }
static void Main(string[] args) { ProblemFactory problemFactory = new ProblemFactory(); BinaryLevelConfiguration binaryLevelConfig = new BinaryLevelConfiguration(); // register your factory functions problemFactory.RegisterProblem <BinaryProblem>((level) => new BinaryProblem(binaryLevelConfig.GetProblemConfiguration(level))); // consume them IProblem problem1 = problemFactory.GenerateProblem <BinaryProblem>(Level.Easy); IProblem problem2 = problemFactory.GenerateProblem <BinaryProblem>(Level.Hard); }