仮定として、すべての「スニペット」が単一の整数変数を使用する場合(はい、かなり大きな仮定)、辞書を使用してそれらを格納できます。次のようになります。
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);
}