从函数中获取属性<T>
Get Attribute from Function<T>
如何从函数对象中获取自定义属性?
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
,这可能会有帮助,但如果来自您无法修改的某些第 3 方代码,则没有帮助。
如何从函数对象中获取自定义属性?
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
,这可能会有帮助,但如果来自您无法修改的某些第 3 方代码,则没有帮助。