Я использую Ninject 2 на определенный период и обновился до Ninject 3, чтобы лучше поддерживать SignalR и другие фреймворки.Ninject Interceptor custom PlanningStrategy не работает в Ninject 3
Код, используемый для работы нормально.
public class AttributeDrivenPlanningStrategy<TAttribute, TInterceptor> : NinjectComponent, IPlanningStrategy
where TAttribute : Attribute
where TInterceptor : IInterceptor
{
private readonly IAdviceFactory adviceFactory;
private readonly IAdviceRegistry adviceRegistry;
public AttributeDrivenPlanningStrategy(IAdviceFactory adviceFactory, IAdviceRegistry adviceRegistry)
{
this.adviceFactory = adviceFactory;
this.adviceRegistry = adviceRegistry;
}
public void Execute(IPlan plan)
{
var methods = GetCandidateMethods(plan.Type);
foreach (var method in methods)
{
if(!method.HasAttribute<TAttribute>())
{ continue; }
var advice = adviceFactory.Create(method);
advice.Callback = request => request.Kernel.Get<TInterceptor>();
adviceRegistry.Register(advice);
if (!plan.Has<ProxyDirective>())
{ plan.Add(new ProxyDirective()); }
}
}
private static IEnumerable<MethodInfo> GetCandidateMethods(Type type)
{
const BindingFlags methodFlags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;
var methods = type.GetMethods(methodFlags);
return methods.Where(ShouldIntercept);
}
private static bool ShouldIntercept(MethodInfo methodInfo)
{
return methodInfo.DeclaringType != typeof (object) &&
!methodInfo.IsPrivate &&
!methodInfo.IsFinal;
}
}
Однако теперь взрывает говорит, что он не может найти IAdviceFactory в Ninject переплетов, так уже есть какие-либо критические изменения в последней версии перехватчика, так как есть рядом нет документации по этому расширению (что Я нахожу странным, учитывая количество AoP, плавающего в эти дни).
Так может ли кто-нибудь указать мне в сторону где-нибудь, что скажет мне, в чем проблема?