gpt4 book ai didi

c# - 是否可以使用 C# 中的委托(delegate)返回方法的代码(作为字符串)?

转载 作者:太空宇宙 更新时间:2023-11-03 19:24:45 24 4
gpt4 key购买 nike

我会举例说明,因为我不确定我问的问题是否正确(英语不是我的主要语言,而且我还在学习 C#)。

我已经开始研究 Project Euler,并决定创建一个应用程序来跟踪我的结果,并将我的 C# 知识用于测试。

在一个特定的类中,我拥有用于​​解决每个问题的静态函数。

static class Answers()
{
public static string A1(){...}
public static string A2(){...}
public static string A3(){...}
//it goes on
}

问题对象将像这样创建(问题类定义和运行时对象创建)。

class Problem
{
public string Description;
public Solution SolutionFinder;

public Problem(string Desc, Solution Solver)
{
this.Description = Desc;
this.SolutionFinder = Solver;
}

public delegate string Solution();

public string SolveProblem()
{
return SolutionFinder.Invoke();
}
}

这是我的表单创建代码:

{
...
List<Problem> Euler = new List<Problem>();
Euler.Add(new Problem("Find the sum of all the multiples of 3 or 5 below 1000.", Answers.A1));
Euler.Add(new Problem("By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.", Answers.A2));
Euler.Add(new Problem("What is the largest prime factor of the number 600851475143 ?", Answers.A3));
...
}

我让类甚至委托(delegate)都正常工作,对此我感到很兴奋。然后我终于决定在表格上展示整个事情。 我想展示的是:每当我使用我的表单解决问题时,问题的描述(已完成)和每个方法的代码(A1、A2 等中的任何内容)。

清楚了吗?只是我希望我的表单显示结果以及如何我得到每个问题的解决方案,但不必为了显示而重新键入每个方法的内容 - 方法已经存在。

请不要介意困惑的代码和过度使用公共(public)成员:我知道这是一种不好的做法,但现在我只是想完成这个个人项目,我相信在这里这样做是可以的,因为这只是一个小小的学习经验。

谢谢。

[编辑]我正在寻找的格式是:

void UpdateForm(int Current)
{
Problem CurrentProblem = Euler[Current-1];
string Desc = CurrentProblem.Description;
string Code = CurrentProblem.SolutionFinder.Method.ReturnType.Name;
//I got this far, but I need to display more than just the name of the method!
...
}

澄清

给定方法:

public static string A1() {
var answer = 1 + 1;
return answer.ToString();
}

是否可以在字符串中获取以下行..?

var answer = 1 + 1;
return answer.ToString();

最佳答案

虽然这不是最奇特的方法,但如果您通过源文件的属性(右键单击/属性)将“复制到输出目录”值设置为“始终复制”(或“如果较新则复制”),您可以自行解析代码文件,同时针对您的编码风格进行优化。

补充一下,除了源代码转储之外,您是否知道基本上是在重建 NUnit?

关于c# - 是否可以使用 C# 中的委托(delegate)返回方法的代码(作为字符串)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9608064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com