Атрибут метода не работает - PullRequest
0 голосов
/ 22 февраля 2011

У меня есть метод с атрибутом (в библиотеке 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 ]

1 голос
/ 22 февраля 2011

Атрибуты - это просто метаданные, они объединены и являются частью вашей кодовой базы, но они не должны запускаться.

Чтобы принудительно запустить свой пользовательский атрибут, вы можете использовать отражение, следующее может привести к выполнению конструктора вашего класса RequireAuthorization:

MemberInfo memberInfo = typeof(MyClass).GetMethod("method1");
var attributes = memberInfo.GetCustomAttributes(false);
0 голосов
/ 22 февраля 2011

Атрибуты являются просто метаданными и не выполняют никакого перехвата вызовов методов до и после процедуры.

Чтобы это работало, вам нужен механизм перехвата, например, Пост # или динамические прокси и т. Д.

См. http://www.sharpcrafters.com/solutions/security

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...