方法上的属性不起作用

时间:2011-02-22 12:58:00

标签: c# attributes

我有一个带属性的方法(在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
    }
}

有些想法吗?

2 个答案:

答案 0 :(得分:1)

属性只是元数据,它们是jitted和代码库的一部分,但它们不需要运行。

要强制运行您的自定义属性,您可以使用反射,以下将导致您的RequireAuthorization类的构造函数被执行:

MemberInfo memberInfo = typeof(MyClass).GetMethod("method1");
var attributes = memberInfo.GetCustomAttributes(false);

答案 1 :(得分:0)

属性只是元数据,不执行任何类型的方法调用的前/后拦截。

为此,您需要一些拦截机制,例如:发布#或动态代理等。

请参阅http://www.sharpcrafters.com/solutions/security