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

标签 c# delegates

我会举例说明,因为我不确定我问的问题是否正确(英语不是我的主要语言,而且我还在学习 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/

相关文章:

c# - 从 FTP 服务器下载新文件和修改后的文件

c# - 使用 - 我的流发生了什么?

c# - 将方法组隐式转换为委托(delegate)(用于 Control.Invoke 的参数)

ios - 使用 Swift 实现 UITextFieldDelegate

c# - 程序可以在Win 7上运行,但不能在Win 8上运行

c# - 在不使用错误处理的情况下监视 c# web 服务的状态

c# - 如何使用 C# 和 SQL Server 连接到数据库

c# - 并发字典中的 valueFactory

ios - 使用 sendAsynchronousRequest :queue:completionHandler: 时显示 'data loading'

C# - 是否可以从 Action 中获取方法的所有者类型?