您好我已经创建了一个Interceptor for Retry Support,并使用RetryAttribute标记方法。
如果类型具有带有该自定义属性的方法,我已经实现了一个IInterceptorSelector来仅返回Interceptor。
在RetryInterceptor类中,我在调用提供的方法上查找该属性,如果存在,则运行重试逻辑。
我希望让IInterceptorSelector在方法的基础上过滤拦截器集,但传入的方法是接口类型,而不是实现它的实际类。有没有办法做到这一点?
感谢。
答案 0 :(得分:1)
您只需使用界面方法info
从类型中检查方法信息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
}
}
}