我有一个带属性的方法(在c#库中)。问题是当我调用我的方法时,属性不是调用。我不明白为什么!
我的代码:
[AttributeUsage(System.AttributeTargets.Method)]
public class RequireAuthorization : System.Attribute
{
private bool _protected = true;
public RequireAuthorization(bool protect)
{
_protected = protect;
}
}
public class MyClass(){
[RequireAuthorization(true)]
public bool method1(){
// some actions
}
}
有些想法吗?
答案 0 :(得分:1)
属性只是元数据,它们是jitted和代码库的一部分,但它们不需要运行。
要强制运行您的自定义属性,您可以使用反射,以下将导致您的RequireAuthorization
类的构造函数被执行:
MemberInfo memberInfo = typeof(MyClass).GetMethod("method1");
var attributes = memberInfo.GetCustomAttributes(false);
答案 1 :(得分:0)
属性只是元数据,不执行任何类型的方法调用的前/后拦截。
为此,您需要一些拦截机制,例如:发布#或动态代理等。