Доступ к a .Свойства атрибута Net из его целевого объекта (например, метода)

#.net #aop

#.net #aop

Вопрос:

Возможно ли получить доступ к свойствам атрибута изнутри элемента, к которому он применен (например, метода)? Например, с помощью приведенного ниже кода могу ли я получить доступ к свойству атрибута «RequiresConnection» с помощью метода «Search»?

     [RequiresConnection]
    public SearchResult Search(SearchInfo searchInfo)
    {
    }
  

Ответ №1:

Конечно

 class TheClass {
  [RequiresConnection]
  public SearchResult Search(SearchInfo searchInfo) {
    MethodInfo methodInfo = typeof(TheClass).GetMethod("Search");
    RequiresConnection attrib = (RequiresConnection).methodInfo.GetCustomAttributes(
      typeof(RequiresConnection),
      false)[0];
  

Ответ №2:

Вы можете использовать отражение. В примере конкретно не выполняется то, что вы хотите, но вы можете адаптировать его, вызвав GetCustomAttributes из своего метода.

Ответ №3:

Конечно. Это будет что-то вроде

 var attributes = StackTrace.GetFrame(0).GetMethod().GetCustomAttributes();