gpt4 book ai didi

c# - 字符串表达式

转载 作者:行者123 更新时间:2023-11-30 15:08:34 27 4
gpt4 key购买 nike

我怎样才能得到像这样的字符串

Namespace.IMyService.Do("1")

从此片段中演示的表达式:

IMyService myService = ...;
int param1 = 1;

myExpressionService.Get(c => myService.Do(param1));

我实际上不想调用 Do 除非使用生成的字符串满足条件。

最佳答案

您将不得不遍历表达式树。这是一些示例代码:

internal static class myExpressionService
{
public static string Get(Expression<Action> expression)
{
MethodCallExpression methodCallExpression = (MethodCallExpression)expression.Body;
var method = methodCallExpression.Method;
var argument = (ConstantExpression) methodCallExpression.Arguments.First();

return string.Format("{0}.{1}({2})", method.DeclaringType.FullName, method.Name, argument.Value);
}
}

如果以这种方式调用它会起作用:string result = myExpressionService.Get(() => myService.Do(1));

输出是:Namespace.IMyService.Do(1)

您可以扩展/更新它来处理您的场景。

关于c# - 字符串表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5384361/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com