2015-03-03 2 views
0

Привет, я создал Interceptor for Retry Support и помечаю методы с помощью RetryAttribute.Замок IInterceptorSelector и тип реализации Метод

Я реализовал IInterceptorSelector, чтобы возвращать Interceptor только в том случае, если тип имеет метод с этим настраиваемым атрибутом.

В классе RetryInterceptor я ищу этот атрибут в методе, предоставляемом вызовом, и если он существует, я запускаю логику повтора.

Я надеялся, что IInterceptorSelector фильтрует набор перехватчиков на основе метода, но переданный метод - это другой тип интерфейса, а не фактический класс, реализующий его. Есть ли способ сделать это?

Спасибо.

+0

Может ли вы поделиться кодом с изложением проблемы, пожалуйста? –

ответ

1

Вы можете просто проверить по информации метода от типа с помощью интерфейса данных метода:

public class Selector : IInterceptorSelector 
{ 
    public IInterceptor[] SelectInterceptors(Type type, MethodInfo method, IInterceptor[] interceptors) 
    { 
     var attributes = type.GetMethod(method.Name).GetCustomAttributes(false); 
     if (attributes.OfType<Retry>().Any()) 
     { 
      // return retry interceptor 
     } 
     else 
     { 
      // return no interceptor 
     } 
    } 
}