有没有办法在C#中反序列化表达式,我想将表达式存储在数据库中并在运行时加载它们.
我有一个具有以下签名的功能......
public string DoJunk(Expression<Func<bool>> expression)
Run Code Online (Sandbox Code Playgroud)
我试图找到一种方法将"表达式"参数转换回类似于原始源代码的东西(或者至少是原始源代码的ac#表示).所以,如果有人像这样调用这个函数......
DoJunk(() => (i + j) * 9 == Math.Round((double)j / (i - 3), 4))
Run Code Online (Sandbox Code Playgroud)
...我希望能够将表达式转换为此...
(i + j) * 9 == Math.Round((double)j / (i - 3), 4)
Run Code Online (Sandbox Code Playgroud)
有没有人这样做过?
给出以下语句lambda示例:
var fMyAction = new Action(() =>
{
x += 2;
something = what + ever;
});
Run Code Online (Sandbox Code Playgroud)
有什么方法可以获得lambda的主体并将其转换为字符串?(最终会允许为Action这种类编写扩展方法的东西:fMyAction.Dump()将返回"x += 2; something = what + ever;").
谢谢
有没有办法将现有的Func委托转换为这样的字符串:
Func<int, int> func = (i) => i*2;
string str = someMethod(func); // returns "Func<int, int> func = (i) => i*2"
Run Code Online (Sandbox Code Playgroud)
或者至少接近它