从函数< >获取属性
本文关键字:获取 属性 函数 | 更新日期: 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
,这可能会有所帮助,但如果来自一些您无法修改的第三方代码,则不会。