从函数< >获取属性

本文关键字:获取 属性 函数 | 更新日期: 2023-09-27 18:02:17

如何从函数对象中获得自定义属性?

public static void Main(string[] args) {
    Func<object> fun = () => Foo();
    //fun. Get Foo Custom Attribute
}
[CustomAttrib]
public static object Foo() {
    return new object();
}

从函数< >获取属性

对于Function,您正在寻找的信息是不可用的。

然而,如果它是一个Expression,它将非常容易:

Expression<Func<object>> expression = () => Foo();
var method = ((MethodCallExpression)expression.Body).Method;
Console.WriteLine(method.GetCustomAttributes(false)[0]);

可以使用Compile()方法将Expression转换为Function

var fun = expression.Compile();

如果您自己定义Function,这可能会有所帮助,但如果来自一些您无法修改的第三方代码,则不会。