gpt4 book ai didi

c# - 确定 MethodInfo 是否表示 lambda 表达式

转载 作者:太空宇宙 更新时间:2023-11-03 20:06:20 25 4
gpt4 key购买 nike

如何确定 MethodInfo 是否表示 lambda 表达式的元数据?

最佳答案

我认为你在谈论匿名方法。因此,你可以为此编写一个扩展方法并检查该方法的名称是否包含任何无效字符。因为编译器生成的方法包含无效字符,你可以使用该功能来判断方法是否匿名:

public static bool IsAnonymous(this MethodInfo method)
{
var invalidChars = new[] {'<', '>'};
return method.Name.Any(invalidChars.Contains);
}

测试:

Func<int> f = () => 23;

Console.Write(f.Method.IsAnonymous()); // true

更优雅的方法是使用 IsValidLanguageIndependentIdentifier 方法验证方法名称,如下所示(来自 this 答案的方法):

public static bool IsAnonymous(this MethodInfo method)
{
return !CodeGenerator.IsValidLanguageIndependentIdentifier(method.Name);
}

请记住,为了访问 IsValidLanguageIndependentIdentifier 方法,您需要包含 System.CodeDom.Compiler 命名空间。

关于c# - 确定 MethodInfo 是否表示 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23228075/

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