我正在开发一个小型控制台应用程序,通过面试准备问题跟踪我的进度。我希望控制台应用可以遍历我创建的所有Problems
和Solutions
。我的想法是我有三个班级:
class Problem
{
public string Title { get; set; }
public string Description { get; set; }
public Type InputType { get; set; }
public Type OutputType { get; set; }
public List<Test> Tests { get; set; }
public List<Solution> Solutions { get; set; }
}
class Solution
{
public Func<object, object> SolutionFunc { get; set; }
public List<string> Notes { get; set; }
public int PerformanceInMs { get; set; }
}
class Test
{
public object TestInput { get; set; }
public object TestOutput { get; set; }
}
我的目标是遍历所有Problems
,找到我创建的所有Solutions
,然后针对他们运行Tests
,以便在我改进时为我的进展提供一些方便的见解我的Solutions
随着时间的推移。
现在我有以下内容:
static List<Problem> problems = new List<Problem>();
static void Main(string[] args)
{
LoadProblems();
}
static void LoadProblems()
{
// todo: load from xml
Problem testProblem = new Problem()
{
Title = "Test Problem",
Description = "Return true if number is positive.",
Solutions = new List<Solution>(),
InputType = typeof(int),
OutputType = typeof(bool),
Tests = new List<Test>()
};
// todo: find better way to organize/dynamically load solutions and map to Problems
testProblem.Solutions.Add(new Solution()
{
SolutionFunc = IsPositive1, // this is where I'm struggling
Notes = new List<string>()
});
problems.Add(testProblem);
return;
}
static bool IsPositive1(int testInput)
{
return testInput > 0;
}
假设所有Problems
只有一个输入和输出,我希望能够在不输入SolutionFunc = IsPositive1
属性的情况下分配SolutionFunc
,因为{{1} }和InputType
将根据OutputType
进行更改。
我不知道上述作业是否是语法问题或者我的整体方法存在问题;如何在实例化时定义T的类上定义Problem
属性?