如果作为一个假设,你所有的“片段”都使用一个整数变量(是的,一个相当大的假设),你可以使用字典来存储它们,如下所示:
public class CodeRepo
{
private Dictionary<int, Func<int, int>> snippets = new Dictionary<int, Func<int, int>>();
public void RegisterCodeSnippet(int key, Func<int, int> code)
{
if (!snippets.ContainsKey(key))
snippets.Add(key, code);
}
public Func<int, int> GetCodeSnippet(int key)
{
if (snippets.ContainsKey(key))
return snippets[key];
return null;
}
public IEnumerable<int> RunAllSnippets(int parameter)
{
foreach (var item in snippets)
yield return item.Value(parameter);
}
}
您可以使用该存储库,例如:
CodeRepo repo = new CodeRepo();
repo.RegisterCodeSnippet(1, x => x); //identity function;
repo.RegisterCodeSnippet(2, x => x * x);//x squared
repo.RegisterCodeSnippet(3, x => Math.Sign(x));//sign of x
// etc...
var square = repo.GetCodeSnippet(2);
Console.WriteLine(square(7)); //writes 49
//runs all snippets in order, produces 3, 9, 1
foreach (int result in repo.RunAllSnippets(3))
{
Console.WriteLine(result);
}