如何将通用Func <t,tresult =“”>作为属性添加到C#中的类中?

时间:2018-01-19 03:15:32

标签: c#

我正在开发一个小型控制台应用程序,通过面试准备问题跟踪我的进度。我希望控制台应用可以遍历我创建的所有ProblemsSolutions。我的想法是我有三个班级:

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属性?

0 个答案:

没有答案