我正在尝试创建一个 C# 程序,让用户通过在文本框中输入文本来为函数提供实现。我提供了函数头(输入类型,输出类型),他们只需要提供实际的实现。然后我存储该函数以供以后调用。他们可能需要从 .NET 框架导入一些东西,但在它之外什么都不需要。
我不关心安全性,这只是供内部使用的工具。
在 .NET 中是否有一种简单的方法可以做到这一点?
用法看起来像(需要实现 CompileUserFunction 函数,该函数接受一个 int 并返回一个对象):
Func<int, object> CreateUserFunction(string input) {
Func<int, object> userFunc = CompileUserFunction(input);
return (i) => userFunc(i);
}
public void DoSomething() {
List<Func<int, object>> userFuncs = new List<Func<int, object>>();
string userInput = @"DateTime t = DateTime.Now;
t.AddDays(i);
return t;";
userFuncs.Add(CreateUserFunction(userInput));
userFuncs.Add(CreateUserFunction("return i;"));
userFuncs.Add(CreateUserFunction("i = i * 5; return i;"));
var result = userFuncs[0](5);
}